]> Dogcows Code - chaz/openbox/blobdiff - openbox/stacking.c
better placement for top level menus under the mouse cursor. middle placement is...
[chaz/openbox] / openbox / stacking.c
index db1606b58417726022d4231c5cfe1f2222d3e767..cb8eaf31a996fd72c29dce49d01dd275be80d908 100644 (file)
@@ -158,7 +158,7 @@ static void do_lower(GList *wins)
     }
 }
 
-static void restack_windows(ObClient *selected, gboolean raise, gboolean group)
+static void restack_windows(ObClient *selected, gboolean raise)
 {
     GList *it, *last, *below, *above, *next;
     GList *wins = NULL;
@@ -187,7 +187,7 @@ static void restack_windows(ObClient *selected, gboolean raise, gboolean group)
 
         /* call restack for each of these to lower them */
         for (top_it = top_reorder; top_it; top_it = g_slist_next(top_it))
-            restack_windows(top_it->data, raise, group);
+            restack_windows(top_it->data, raise);
         return;
     }
 
@@ -197,7 +197,9 @@ static void restack_windows(ObClient *selected, gboolean raise, gboolean group)
     stacking_list = g_list_delete_link(stacking_list, it);
 
     /* go from the bottom of the stacking list up */
-    for (it = g_list_last(stacking_list); it; it = g_list_previous(it)) {
+    for (it = g_list_last(stacking_list); it; it = next) {
+        next = g_list_previous(it);
+
         if (WINDOW_IS_CLIENT(it->data)) {
             ObClient *ch = it->data;
 
@@ -242,8 +244,10 @@ static void restack_windows(ObClient *selected, gboolean raise, gboolean group)
     last = NULL;
     for (it = g_list_last(stacking_list); it; it = g_list_previous(it))
     {
-        if (window_layer(it->data) < selected->layer)
+        if (window_layer(it->data) < selected->layer) {
+            last = it;
             continue;
+        }
         /* if lowering, stop at the beginning of the layer */
         if (!raise)
             break;
@@ -306,12 +310,12 @@ static void restack_windows(ObClient *selected, gboolean raise, gboolean group)
     g_list_free(wins);
 }
 
-void stacking_raise(ObWindow *window, gboolean group)
+void stacking_raise(ObWindow *window)
 {
     if (WINDOW_IS_CLIENT(window)) {
         ObClient *selected;
         selected = WINDOW_AS_CLIENT(window);
-        restack_windows(selected, TRUE, group);
+        restack_windows(selected, TRUE);
     } else {
         GList *wins;
         wins = g_list_append(NULL, window);
@@ -321,12 +325,12 @@ void stacking_raise(ObWindow *window, gboolean group)
     }
 }
 
-void stacking_lower(ObWindow *window, gboolean group)
+void stacking_lower(ObWindow *window)
 {
     if (WINDOW_IS_CLIENT(window)) {
         ObClient *selected;
         selected = WINDOW_AS_CLIENT(window);
-        restack_windows(selected, FALSE, group);
+        restack_windows(selected, FALSE);
     } else {
         GList *wins;
         wins = g_list_append(NULL, window);
@@ -356,7 +360,7 @@ void stacking_add(ObWindow *win)
                                              future */
 
     stacking_list = g_list_append(stacking_list, win);
-    stacking_raise(win, FALSE);
+    stacking_raise(win);
 }
 
 void stacking_add_nonintrusive(ObWindow *win)
This page took 0.021906 seconds and 4 git commands to generate.