summaryrefslogtreecommitdiff
path: root/src/screen.c
diff options
context:
space:
mode:
authorMark McLoughlin <mark@skynet.ie>2002-08-14 00:08:30 +0000
committerMark McLoughlin <mmclouglin@src.gnome.org>2002-08-14 00:08:30 +0000
commit689bcd14aaf67deaa4917aa0edb68b67be86b67f (patch)
tree9942135e98fef39ad7087280da8196d4aba4e60f /src/screen.c
parent42440b17e8e1f25cacca31eedaa2562750c4cb56 (diff)
downloadmetacity-689bcd14aaf67deaa4917aa0edb68b67be86b67f.tar.gz
move from workspace.c. (update_num_workspaces): set the hint here. Fixes
2002-08-14 Mark McLoughlin <mark@skynet.ie> * src/screen.c: (set_number_of_spaces_hint), move from workspace.c. (update_num_workspaces): set the hint here. Fixes #90123. * src/workspace.c: (meta_workspace_new), (meta_workspace_free): don't set the hint here. (update_num_workspaces): move to screen.c
Diffstat (limited to 'src/screen.c')
-rw-r--r--src/screen.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/screen.c b/src/screen.c
index 9319f7f4..90f728b6 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -744,6 +744,27 @@ meta_screen_get_n_workspaces (MetaScreen *screen)
return i;
}
+static int
+set_number_of_spaces_hint (MetaScreen *screen,
+ int n_spaces)
+{
+ unsigned long data[1];
+
+ if (screen->closing > 0)
+ return 0;
+
+ data[0] = n_spaces;
+
+ meta_verbose ("Setting _NET_NUMBER_OF_DESKTOPS to %ld\n", data[0]);
+
+ meta_error_trap_push (screen->display);
+ XChangeProperty (screen->display->xdisplay, screen->xroot,
+ screen->display->atom_net_number_of_desktops,
+ XA_CARDINAL,
+ 32, PropModeReplace, (guchar*) data, 1);
+ return meta_error_trap_pop (screen->display);
+}
+
static void
update_num_workspaces (MetaScreen *screen)
{
@@ -818,16 +839,14 @@ update_num_workspaces (MetaScreen *screen)
g_list_free (extras);
- /* Add missing workspaces. FIXME This will keep setting the
- * number-of-workspaces root window property on each workspace
- * creation, kind of a lame thing
- */
while (i < new_num)
{
meta_workspace_new (screen);
++i;
}
+ set_number_of_spaces_hint (screen, new_num);
+
meta_screen_queue_workarea_recalc (screen);
}