summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2008-01-11 16:29:11 -0500
committerDana Jansens <danakj@orodu.net>2008-01-11 16:29:11 -0500
commite61f58462fe0cdd85090b621c6906b2885990071 (patch)
treef2fc133434ea7df00293bb6bf8833549bcbbbb4b
parent22c102572e892dc36b1c411edbd70415efe1f0e6 (diff)
freeze onscreen stacking order changes while a temp raise for focus cycling is occuring
-rw-r--r--openbox/stacking.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/openbox/stacking.c b/openbox/stacking.c
index bb8975d4..34ab0588 100644
--- a/openbox/stacking.c
+++ b/openbox/stacking.c
@@ -28,6 +28,10 @@
#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 */
+gboolean pause_changes = FALSE;
void stacking_set_list(void)
{
@@ -99,7 +103,8 @@ static void do_restack(GList *wins, GList *before)
}
#endif
- XRestackWindows(ob_display, win, i);
+ if (!pause_changes)
+ XRestackWindows(ob_display, win, i);
g_free(win);
stacking_set_list();
@@ -125,6 +130,8 @@ void stacking_temp_raise(ObWindow *window)
win[1] = window_top(window);
XRestackWindows(ob_display, win, 2);
+
+ pause_changes = TRUE;
}
void stacking_restore()
@@ -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)