all repos — openbox @ 7d164842e0d0c3138401fad0dafc6f21bba0a04f

openbox fork - make it a bit more like ryudo

give focus to new windows when *any* relative already has focus..

don't give it when it will not go to the window anyway tho, like if there is already a modal child for it
Dana Jansens danakj@orodu.net
commit

7d164842e0d0c3138401fad0dafc6f21bba0a04f

parent

ac175e47f92ffdb6809405ec80f6e3576a2f9292

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

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

@@ -348,7 +348,7 @@ (!self->session || self->session->focused) &&

!self->iconic && /* this means focus=true for window is same as config_focus_new=true */ ((config_focus_new || (settings && settings->focus == 1)) || - client_search_focus_parent(self)) && + client_search_focus_tree_full(self)) && /* this checks for focus=false for the window */ (!settings || settings->focus != 0) && /* note the check against Type_Normal/Dialog, not client_normal(self),

@@ -474,8 +474,8 @@ ob_debug_type(OB_DEBUG_FOCUS,

"Not focusing the window because its on another " "desktop\n"); } - /* If something is focused, and it's not our parent... */ - else if (focus_client && client_search_focus_parent(self) == NULL) + /* If something is focused, and it's not our relative... */ + else if (focus_client && client_search_focus_tree_full(self) == NULL) { /* If time stamp is old, don't steal focus */ if (self->user_time && last_time &&

@@ -508,6 +508,14 @@ activate = FALSE;

ob_debug_type(OB_DEBUG_FOCUS, "Not focusing the window because a globally " "active client has focus\n"); + } + /* Don't move focus if it's not going to go to this window + anyway */ + else if (client_focus_target(self) != self) { + activate = FALSE; + ob_debug_type(OB_DEBUG_FOCUS, + "Not focusing the window because another window " + "would get the focus anyway\n"); } }