]> Dogcows Code - chaz/openbox/commitdiff
only add non-nonintrusively when both windows share a stacking layer
authorDana Jansens <danakj@orodu.net>
Thu, 29 May 2003 15:24:56 +0000 (15:24 +0000)
committerDana Jansens <danakj@orodu.net>
Thu, 29 May 2003 15:24:56 +0000 (15:24 +0000)
openbox/stacking.c

index d611246977f40fd837fcb30d4292a64c6b11182b..f0c13d6d2f0d7fc584941a104ea97ee340bcd46a 100644 (file)
@@ -110,6 +110,8 @@ void stacking_raise(ObWindow *window)
 {
     g_assert(stacking_list != NULL); /* this would be bad */
 
+    g_message("RAISING");
+
     if (WINDOW_IS_CLIENT(window)) {
         Client *client = WINDOW_AS_CLIENT(window);
 
@@ -243,23 +245,25 @@ void stacking_add_nonintrusive(ObWindow *win)
         if (!(it_before = g_list_find(stacking_list, parent))) {
             /* no parent to put above, try find the focused client to go
                under */
-            if ((it_before = g_list_find(stacking_list, focus_client)))
-                it_before = it_before->next;
-            else {
-                /* out of ideas, just add it normally... */
-                stacking_add(win);
-                return;
+            if (focus_client && focus_client->layer == client->layer) {
+                if ((it_before = g_list_find(stacking_list, focus_client)))
+                    it_before = it_before->next;
             }
         }
-        stacking_list = g_list_insert_before(stacking_list, it_before, win);
-
-        it_before = g_list_find(stacking_list, win)->prev;
-        if (!it_before)
-            wins[0] = focus_backup;
-        else
-            wins[0] = window_top(it_before->data);
-        wins[1] = window_top(win);
-
-        XRestackWindows(ob_display, wins, 2);
+        if (!it_before) {
+            /* out of ideas, just add it normally... */
+            stacking_add(win);
+        } else {
+            stacking_list = g_list_insert_before(stacking_list, it_before,win);
+
+            it_before = g_list_find(stacking_list, win)->prev;
+            if (!it_before)
+                wins[0] = focus_backup;
+            else
+                wins[0] = window_top(it_before->data);
+            wins[1] = window_top(win);
+
+            XRestackWindows(ob_display, wins, 2);
+        }
     }
 }
This page took 0.025668 seconds and 4 git commands to generate.