]> Dogcows Code - chaz/openbox/commitdiff
give focus to new windows when *any* relative already has focus..
authorDana Jansens <danakj@orodu.net>
Sat, 26 May 2007 14:56:53 +0000 (14:56 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 26 May 2007 14:56:53 +0000 (14:56 +0000)
don't give it when it will not go to the window anyway tho, like if there is already a modal child for it

openbox/client.c

index d0cb19341ff05725afd2fe1b8236e9df19cb7d1f..d94afccfb3092f2b4ab8a103979a23961b7dee85 100644 (file)
@@ -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) {
This page took 0.029191 seconds and 4 git commands to generate.