smarter picking valid focus cycle targets
Dana Jansens danakj@orodu.net
1 files changed,
5 insertions(+),
6 deletions(-)
jump to
M
openbox/focus.c
→
openbox/focus.c
@@ -179,10 +179,6 @@ at all for them.
*/ 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) {@@ -200,6 +196,10 @@ if (focus_fallback_transient(old->transient_for, old))
return; } } + + if (!config_focus_last && config_focus_follow) + if (focus_under_pointer()) + return; #if 0 /* try for group relations */@@ -276,7 +276,7 @@ /* we don't use client_can_focus here, because that doesn't let you
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 @@ } else {
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 */