/* 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);
}
/* 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 */
{
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);
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);
}