]> Dogcows Code - chaz/openbox/commitdiff
dont give focus to transients when the situation is ambiguous
authorDana Jansens <danakj@orodu.net>
Thu, 24 May 2007 21:01:19 +0000 (21:01 +0000)
committerDana Jansens <danakj@orodu.net>
Thu, 24 May 2007 21:01:19 +0000 (21:01 +0000)
openbox/client.c

index 14f44ea2ed292b4c6b342b843840b5e2ef59196f..3ba8ba3ba7587d42b060ca588e6a31cb856b3f3c 100644 (file)
@@ -486,10 +486,24 @@ void client_manage(Window window)
                               "Not focusing the window because the time is "
                               "too old\n");
             }
+            /* If its a transient (and parents aren't focused) and the time
+               is ambiguous (either the current focus target doesn't have
+               a timestamp, or they are the same (we probably inherited it
+               from them) */
+            else if (self->transient_for != NULL &&
+                     (!last_time || self->user_time == last_time))
+            {
+                activate = FALSE;
+                ob_debug_type(OB_DEBUG_FOCUS,
+                              "Not focusing the window because it is a "
+                              "transient, and the time is very ambiguous\n");
+            }
             /* Don't steal focus from globally active clients.
                I stole this idea from KWin. It seems nice.
              */
-            if (!(focus_client->can_focus || focus_client->focus_notify)) {
+            else if (!(focus_client->can_focus ||
+                       focus_client->focus_notify))
+            {
                 activate = FALSE;
                 ob_debug_type(OB_DEBUG_FOCUS,
                               "Not focusing the window because a globally "
This page took 0.025416 seconds and 4 git commands to generate.