]> Dogcows Code - chaz/openbox/blobdiff - openbox/stacking.c
s/ob_display/obt_display/ and remove ob_display
[chaz/openbox] / openbox / stacking.c
index bb8975d40f71efd7bc2abf8a8d3fa3bb5e8178ce..6910b19160d1eed2bff7aa881d44f4ce66a670a7 100644 (file)
 #include "debug.h"
 
 GList  *stacking_list = NULL;
+/*! When true, stacking changes will not be reflected on the screen.  This is
+  to freeze the on-screen stacking order while a window is being temporarily
+  raised during focus cycling */
+static gboolean pause_changes = FALSE;
 
 void stacking_set_list(void)
 {
@@ -50,7 +54,7 @@ void stacking_set_list(void)
         }
     }
 
-    PROP_SETA32(RootWindow(ob_display, ob_screen),
+    PROP_SETA32(RootWindow(obt_display, ob_screen),
                 net_client_list_stacking, window, (gulong*)windows, i);
 
     g_free(windows);
@@ -99,7 +103,8 @@ static void do_restack(GList *wins, GList *before)
     }
 #endif
 
-    XRestackWindows(ob_display, win, i);
+    if (!pause_changes)
+        XRestackWindows(obt_display, win, i);
     g_free(win);
 
     stacking_set_list();
@@ -125,9 +130,11 @@ void stacking_temp_raise(ObWindow *window)
 
     win[1] = window_top(window);
     XRestackWindows(ob_display, win, 2);
+
+    pause_changes = TRUE;
 }
 
-void stacking_restore()
+void stacking_restore(void)
 {
     Window *win;
     GList *it;
@@ -139,6 +146,8 @@ void stacking_restore()
         win[i] = window_top(it->data);
     XRestackWindows(ob_display, win, i);
     g_free(win);
+
+    pause_changes = FALSE;
 }
 
 static void do_raise(GList *wins)
This page took 0.02228 seconds and 4 git commands to generate.