]> Dogcows Code - chaz/openbox/blobdiff - openbox/screen.c
avoid new gcc warning (casting ** to const** is not valid for good reason)
[chaz/openbox] / openbox / screen.c
index 5246d341ed22462bdbf55e778ff6058ee4eacd29..47ecc18341364574800801f5d3e84779dafe0483 100644 (file)
@@ -396,7 +396,7 @@ void screen_startup(gboolean reconfig)
 
         /* set the root window property */
         OBT_PROP_SETSS(obt_root(ob_screen),
-                       NET_DESKTOP_NAMES, utf8, (const gchar**)names);
+                       NET_DESKTOP_NAMES, utf8, (const gchar*const*)names);
 
         g_strfreev(names);
     }
@@ -1206,7 +1206,7 @@ void screen_update_desktop_names(void)
         /* if we changed any names, then set the root property so we can
            all agree on the names */
         OBT_PROP_SETSS(obt_root(ob_screen), NET_DESKTOP_NAMES,
-                       utf8, (const gchar**)screen_desktop_names);
+                       utf8, (const gchar*const*)screen_desktop_names);
     }
 
     /* resize the pager for these names */
@@ -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.021678 seconds and 4 git commands to generate.