summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/focus_cycle.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/openbox/focus_cycle.c b/openbox/focus_cycle.c
index 74cabac6..7549fbe5 100644
--- a/openbox/focus_cycle.c
+++ b/openbox/focus_cycle.c
@@ -149,11 +149,16 @@ gboolean focus_cycle_target_valid(ObClient *ft,
ft->modal ||
!ft->skip_taskbar);
- /* it's not going to just send fous off somewhere else (modal window) */
+ /* it's not going to just send focus off somewhere else (modal window),
+ unless that modal window is not one of our valid targets, then let
+ you choose this window and bring the modal one here */
{
ObClient *cft = client_focus_target(ft);
- ok = ok && (ft == cft || (cft->desktop != DESKTOP_ALL &&
- cft->desktop != ft->desktop));
+ ok = ok && (ft == cft || !focus_cycle_target_valid(cft,
+ iconic_windows,
+ all_desktops,
+ dock_windows,
+ desktop_windows));
}
return ok;