]> Dogcows Code - chaz/openbox/blobdiff - openbox/focus.c
fallback to transient parents properly
[chaz/openbox] / openbox / focus.c
index 73cb6f52c9b096d53cc5150c85d179c85e911184..a84d253a2bbb5e88b766c283699555d0776f7446 100644 (file)
@@ -244,14 +244,11 @@ static ObClient* focus_fallback_transient(ObClient *top, ObClient *old)
         return NULL;
 }
 
-ObClient* focus_fallback_target(ObFocusFallbackType type)
+ObClient* focus_fallback_target(ObFocusFallbackType type, ObClient *old)
 {
     GList *it;
-    ObClient *old = NULL;
     ObClient *target = NULL;
 
-    old = focus_client;
-
     if ((type == OB_FOCUS_FALLBACK_UNFOCUSING
          || type == OB_FOCUS_FALLBACK_CLOSED) && old) {
         if (old->transient_for) {
@@ -336,6 +333,7 @@ ObClient* focus_fallback_target(ObFocusFallbackType type)
 void focus_fallback(ObFocusFallbackType type)
 {
     ObClient *new;
+    ObClient *old = focus_client;
 
     /* unfocus any focused clients.. they can be focused by Pointer events
        and such, and then when I try focus them, I won't get a FocusIn event
@@ -343,7 +341,7 @@ void focus_fallback(ObFocusFallbackType type)
     */
     focus_set_client(NULL);
 
-    if ((new = focus_fallback_target(type)))
+    if ((new = focus_fallback_target(type, old)))
         client_focus(new);
 }
 
This page took 0.021835 seconds and 4 git commands to generate.