X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Ffocus.c;h=b6d294bbd076096e107df463e908a02469cb0144;hb=8aee387193fd73bbe4a8019bc7e31d5d0e18e83d;hp=dd83061f2dd83feb0002a1f4d67661c2ae635daa;hpb=d5a1b968028839924a7d8f67833ce35bf58cb0f5;p=chaz%2Fopenbox diff --git a/openbox/focus.c b/openbox/focus.c index dd83061f..b6d294bb 100644 --- a/openbox/focus.c +++ b/openbox/focus.c @@ -179,10 +179,6 @@ void focus_fallback(ObFocusFallbackType type) */ focus_set_client(NULL); - if (!config_focus_last && config_focus_follow) - if (focus_under_pointer()) - return; - if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) { /* try for transient relations */ if (old->transient_for) { @@ -201,6 +197,10 @@ void focus_fallback(ObFocusFallbackType type) } } + if (!config_focus_last && config_focus_follow) + if (focus_under_pointer()) + return; + #if 0 /* try for group relations */ if (old->group) { @@ -232,7 +232,7 @@ void focus_fallback(ObFocusFallbackType type) static void popup_cycle(ObClient *c, gboolean show) { - if (!show || !config_dialog_focus) { + if (!show) { icon_popup_hide(focus_cycle_popup); } else { Rect *a; @@ -276,7 +276,7 @@ static gboolean valid_focus_target(ObClient *ft) focus an iconic window, but we want to be able to, so we just check if the focus flags on the window allow it, and its on the current desktop */ - return (ft->transients == NULL && client_normal(ft) && + return (ft == client_focus_target(ft) && client_normal(ft) && ((ft->can_focus || ft->focus_notify) && !ft->skip_taskbar && (ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL))); @@ -324,7 +324,6 @@ void focus_cycle(gboolean forward, gboolean linear, it = it->prev; if (it == NULL) it = g_list_last(list); } - /*ft = client_focus_target(it->data);*/ ft = it->data; if (valid_focus_target(ft)) { if (ft != focus_cycle_target) { /* prevents flicker */