From: Dana Jansens Date: Sun, 2 Mar 2008 20:03:10 +0000 (-0500) Subject: Merge branch 'backport' into work X-Git-Tag: xkb~107 X-Git-Url: http://git.openbox.org/?p=dana%2Fopenbox.git;a=commitdiff_plain;h=c70379fa8f771e499a4d47e84af06d71838b780d Merge branch 'backport' into work --- c70379fa8f771e499a4d47e84af06d71838b780d diff --cc openbox/client.c index c0864bc,98d1035..b57d616 --- a/openbox/client.c +++ b/openbox/client.c @@@ -442,12 -528,10 +448,10 @@@ void client_manage(Window window, ObPro raise = TRUE; ob_debug_type(OB_DEBUG_FOCUS, "Not focusing the window because its on another " - "desktop\n"); + "desktop"); } - /* If something is focused, and it's not our relative... */ - else if (focus_client && client_search_focus_tree_full(self) == NULL && - client_search_focus_group_full(self) == NULL) - { + /* If something is focused... */ + else if (focus_client) { /* If the user is working in another window right now, then don't steal focus */ if (event_last_user_time && launch_time && @@@ -459,10 -543,11 +463,11 @@@ activate = FALSE; ob_debug_type(OB_DEBUG_FOCUS, "Not focusing the window because the user is " - "working in another window\n"); + "working in another window"); } - /* If it's a transient (and its parents aren't focused) */ - else if (client_has_parent(self)) { + /* If the new window is a transient (and its relatives aren't + focused) */ + else if (client_has_parent(self) && !relative_focused) { activate = FALSE; ob_debug_type(OB_DEBUG_FOCUS, "Not focusing the window because it is a " @@@ -486,10 -571,13 +491,13 @@@ raise = TRUE; ob_debug_type(OB_DEBUG_FOCUS, "Not focusing the window because another window " - "would get the focus anyway\n"); + "would get the focus anyway"); } + /* Don't move focus if the window is not visible on the current + desktop and none of its relatives are focused */ else if (!(self->desktop == screen_desktop || - self->desktop == DESKTOP_ALL)) + self->desktop == DESKTOP_ALL) && + !relative_focused) { activate = FALSE; raise = TRUE;