all repos — openbox @ eb18f502b533210f63100265e7be55718f6c78f0

openbox fork - make it a bit more like ryudo

fallback to desktops properly
Dana Jansens danakj@orodu.net
commit

eb18f502b533210f63100265e7be55718f6c78f0

parent

a8a93d7d39b3cc82a25d99c9c639c97a5facbfec

1 files changed, 11 insertions(+), 5 deletions(-)

jump to
M openbox/focus.copenbox/focus.c

@@ -219,8 +219,11 @@ }

#endif ob_debug_type(OB_DEBUG_FOCUS, "trying omnipresentness\n"); - if (allow_refocus && old && old->desktop == DESKTOP_ALL) + if (allow_refocus && old && old->desktop == DESKTOP_ALL && + client_normal(old)) + { return old; + } ob_debug_type(OB_DEBUG_FOCUS, "trying the focus order\n");

@@ -239,13 +242,15 @@ 5. it is a normal type window, don't fall back onto a dock or

a splashscreen or a desktop window (save the desktop as a backup fallback though) */ - if (client_can_focus(c) && c->desktop == screen_desktop && - !c->iconic) + if (client_can_focus(c) && !c->iconic) { - if (client_normal(c)) { + if (c->desktop == screen_desktop && client_normal(c)) { ob_debug_type(OB_DEBUG_FOCUS, "found in focus order\n"); return it->data; - } else if (c->type == OB_CLIENT_TYPE_DESKTOP && !desktop) + } else if ((c->desktop == screen_desktop || + c->desktop == DESKTOP_ALL) && + c->type == OB_CLIENT_TYPE_DESKTOP && + desktop == NULL) desktop = c; } }

@@ -253,6 +258,7 @@

/* as a last resort fallback to the desktop window if there is one. (if there's more than one, then the one most recently focused.) */ + ob_debug_type(OB_DEBUG_FOCUS, "found desktop: \n", !!desktop); return desktop; }