From: Dana Jansens Date: Sat, 26 May 2007 14:56:53 +0000 (+0000) Subject: give focus to new windows when *any* relative already has focus.. X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;ds=sidebyside;h=7d164842e0d0c3138401fad0dafc6f21bba0a04f;p=chaz%2Fopenbox 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 --- diff --git a/openbox/client.c b/openbox/client.c index d0cb1934..d94afccf 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -348,7 +348,7 @@ void client_manage(Window window) !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 @@ void client_manage(Window window) "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 && @@ -509,6 +509,14 @@ void client_manage(Window window) "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"); + } } if (!activate) {