]> Dogcows Code - chaz/openbox/blobdiff - openbox/stacking.c
Fix some rebase artifacts
[chaz/openbox] / openbox / stacking.c
index 1638908bd55ffb3c13c83f1991197ea5b808b288..58a85ecade840762317ba5cadf64c3f8ec8f32d3 100644 (file)
@@ -18,7 +18,6 @@
 */
 
 #include "openbox.h"
-#include "prop.h"
 #include "screen.h"
 #include "focus.h"
 #include "client.h"
 #include "window.h"
 #include "event.h"
 #include "debug.h"
+#include "obt/prop.h"
 
 GList  *stacking_list = NULL;
+GList  *stacking_list_tail = 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 */
@@ -55,8 +56,8 @@ void stacking_set_list(void)
         }
     }
 
-    PROP_SETA32(RootWindow(ob_display, ob_screen),
-                net_client_list_stacking, window, (gulong*)windows, i);
+    OBT_PROP_SETA32(obt_root(ob_screen), NET_CLIENT_LIST_STACKING, WINDOW,
+                    (gulong*)windows, i);
 
     g_free(windows);
 }
@@ -69,6 +70,8 @@ static void do_restack(GList *wins, GList *before)
 
 #ifdef DEBUG
     GList *next;
+
+    g_assert(wins);
     /* pls only restack stuff in the same layer at a time */
     for (it = wins; it; it = next) {
         next = g_list_next(it);
@@ -105,7 +108,7 @@ static void do_restack(GList *wins, GList *before)
 #endif
 
     if (!pause_changes)
-        XRestackWindows(ob_display, win, i);
+        XRestackWindows(obt_display, win, i);
     g_free(win);
 
     stacking_set_list();
@@ -132,7 +135,7 @@ void stacking_temp_raise(ObWindow *window)
 
     win[1] = window_top(window);
     start = event_start_ignore_all_enters();
-    XRestackWindows(ob_display, win, 2);
+    XRestackWindows(obt_display, win, 2);
     event_end_ignore_all_enters(start);
 
     pause_changes = TRUE;
@@ -150,7 +153,7 @@ void stacking_restore(void)
     for (i = 1, it = stacking_list; it; ++i, it = g_list_next(it))
         win[i] = window_top(it->data);
     start = event_start_ignore_all_enters();
-    XRestackWindows(ob_display, win, i);
+    XRestackWindows(obt_display, win, i);
     event_end_ignore_all_enters(start);
     g_free(win);
 
@@ -401,6 +404,7 @@ void stacking_raise(ObWindow *window)
         do_raise(wins);
         g_list_free(wins);
     }
+    stacking_list_tail = g_list_last(stacking_list);
 }
 
 void stacking_lower(ObWindow *window)
@@ -416,6 +420,7 @@ void stacking_lower(ObWindow *window)
         do_lower(wins);
         g_list_free(wins);
     }
+    stacking_list_tail = g_list_last(stacking_list);
 }
 
 void stacking_below(ObWindow *window, ObWindow *below)
@@ -430,15 +435,20 @@ void stacking_below(ObWindow *window, ObWindow *below)
     before = g_list_next(g_list_find(stacking_list, below));
     do_restack(wins, before);
     g_list_free(wins);
+    stacking_list_tail = g_list_last(stacking_list);
 }
 
 void stacking_add(ObWindow *win)
 {
     g_assert(screen_support_win != None); /* make sure I dont break this in the
                                              future */
+    /* don't add windows that are being unmanaged ! */
+    if (WINDOW_IS_CLIENT(win)) g_assert(WINDOW_AS_CLIENT(win)->managed);
 
     stacking_list = g_list_append(stacking_list, win);
+
     stacking_raise(win);
+    /* stacking_list_tail set by stacking_raise() */
 }
 
 static GList *find_highest_relative(ObClient *client)
@@ -496,6 +506,9 @@ void stacking_add_nonintrusive(ObWindow *win)
 
     client = WINDOW_AS_CLIENT(win);
 
+    /* don't add windows that are being unmanaged ! */
+    g_assert(client->managed);
+
     /* insert above its highest parent (or its highest child !) */
     it_below = find_highest_relative(client);
 
@@ -548,6 +561,7 @@ void stacking_add_nonintrusive(ObWindow *win)
     wins = g_list_append(NULL, win);
     do_restack(wins, it_below);
     g_list_free(wins);
+    stacking_list_tail = g_list_last(stacking_list);
 }
 
 /*! Returns TRUE if client is occluded by the sibling. If sibling is NULL it
@@ -648,21 +662,20 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
                     sibling->iconic))
     {
         ob_debug("Setting restack sibling to NULL, they are not on the same "
-                 "desktop or it is iconified\n");
+                 "desktop or it is iconified");
         sibling = NULL;
     }
 
     switch (detail) {
     case Below:
-        ob_debug("Restack request Below for client %s sibling %s\n",
+        ob_debug("Restack request Below for client %s sibling %s",
                  client->title, sibling ? sibling->title : "(all)");
         /* just lower it */
         stacking_lower(CLIENT_AS_WINDOW(client));
         ret = TRUE;
         break;
     case BottomIf:
-        ob_debug("Restack request BottomIf for client %s sibling "
-                 "%s\n",
+        ob_debug("Restack request BottomIf for client %s sibling %s",
                  client->title, sibling ? sibling->title : "(all)");
         /* if this client occludes sibling (or anything if NULL), then
            lower it to the bottom */
@@ -672,13 +685,13 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
         }
         break;
     case Above:
-        ob_debug("Restack request Above for client %s sibling %s\n",
+        ob_debug("Restack request Above for client %s sibling %s",
                  client->title, sibling ? sibling->title : "(all)");
         stacking_raise(CLIENT_AS_WINDOW(client));
         ret = TRUE;
         break;
     case TopIf:
-        ob_debug("Restack request TopIf for client %s sibling %s\n",
+        ob_debug("Restack request TopIf for client %s sibling %s",
                  client->title, sibling ? sibling->title : "(all)");
         if (stacking_occluded(client, sibling)) {
             stacking_raise(CLIENT_AS_WINDOW(client));
@@ -686,8 +699,7 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
         }
         break;
     case Opposite:
-        ob_debug("Restack request Opposite for client %s sibling "
-                 "%s\n",
+        ob_debug("Restack request Opposite for client %s sibling %s",
                  client->title, sibling ? sibling->title : "(all)");
         if (stacking_occluded(client, sibling)) {
             stacking_raise(CLIENT_AS_WINDOW(client));
This page took 0.032046 seconds and 4 git commands to generate.