]> Dogcows Code - chaz/openbox/blobdiff - openbox/focus.c
Redraw the focus cycle popup when the list of focusable windows changes, rather than...
[chaz/openbox] / openbox / focus.c
index a0e9c6662f205e402be3853a49f51520deec4d9a..c82c4f62f8bea69a575c5d483343e0a169a8fb71 100644 (file)
@@ -98,6 +98,9 @@ void focus_set_client(ObClient *client)
         PROP_SET32(RootWindow(ob_display, ob_screen),
                    net_active_window, window, active);
     }
+
+    /* make sure the focus cycle popup shows things in the right order */
+    focus_cycle_reorder();
 }
 
 static ObClient* focus_fallback_target(gboolean allow_refocus,
@@ -206,16 +209,14 @@ void focus_order_add_new(ObClient *c)
             focus_order = g_list_insert(focus_order, c, 1);
     }
 
-    /* in the middle of cycling..? kill it. */
-    focus_cycle_stop(c);
+    focus_cycle_add(c);
 }
 
 void focus_order_remove(ObClient *c)
 {
     focus_order = g_list_remove(focus_order, c);
 
-    /* in the middle of cycling..? kill it. */
-    focus_cycle_stop(c);
+    focus_cycle_remove(c);
 }
 
 void focus_order_to_top(ObClient *c)
@@ -293,6 +294,9 @@ gboolean focus_valid_target(ObClient *ft,
 {
     gboolean ok = FALSE;
 
+    /* see if the window is still managed or is going away */
+    if (!ft->managed) return FALSE;
+
     /* it's on this desktop unless you want all desktops.
 
        do this check first because it will usually filter out the most
This page took 0.021135 seconds and 4 git commands to generate.