]> Dogcows Code - chaz/openbox/blobdiff - openbox/screen.c
make sure clients stay on screen when the root window changes size, and maximized...
[chaz/openbox] / openbox / screen.c
index 5246d341ed22462bdbf55e778ff6058ee4eacd29..4b91a6dd23f9812700adfe2152a55e4b968c34e1 100644 (file)
@@ -1374,7 +1374,14 @@ void screen_update_areas(void)
 {
     guint i;
     gulong *dims;
-    GList *it;
+    GList *it, *onscreen;
+
+    /* collect the clients that are on screen */
+    onscreen = NULL;
+    for (it = client_list; it; it = g_list_next(it)) {
+        if (client_monitor(it->data) != screen_num_monitors)
+            onscreen = g_list_prepend(onscreen, it->data);
+    }
 
     g_free(monitor_area);
     get_xinerama_screens(&monitor_area, &screen_num_monitors);
@@ -1448,8 +1455,10 @@ void screen_update_areas(void)
                     dims, 4 * screen_num_desktops);
 
     /* the area has changed, adjust all the windows if they need it */
-    for (it = client_list; it; it = g_list_next(it))
+    for (it = onscreen; it; it = g_list_next(it)) {
+        client_move_onscreen(it->data, FALSE);
         client_reconfigure(it->data, FALSE);
+    }
 
     g_free(dims);
 }
This page took 0.020917 seconds and 4 git commands to generate.