summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/screen.c27
-rw-r--r--src/workspace.c26
2 files changed, 23 insertions, 30 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);
}
diff --git a/src/workspace.c b/src/workspace.c
index 1e9e5b6a..dedde22f 100644
--- a/src/workspace.c
+++ b/src/workspace.c
@@ -27,7 +27,6 @@
void meta_workspace_queue_calc_showing (MetaWorkspace *workspace);
-static int set_number_of_spaces_hint (MetaScreen *screen);
static int set_active_space_hint (MetaScreen *screen);
MetaWorkspace*
@@ -51,9 +50,6 @@ meta_workspace_new (MetaScreen *screen)
workspace->name = g_strdup_printf (_("Workspace %d"),
meta_workspace_index (workspace) + 1);
- /* Update hint for current number of workspaces */
- set_number_of_spaces_hint (screen);
-
return workspace;
}
@@ -94,8 +90,6 @@ meta_workspace_free (MetaWorkspace *workspace)
g_free (workspace);
- /* Update hint for current number of workspaces */
- set_number_of_spaces_hint (screen);
/* don't bother to reset names, pagers can just ignore
* extra ones
*/
@@ -309,26 +303,6 @@ meta_workspace_list_windows (MetaWorkspace *workspace)
}
static int
-set_number_of_spaces_hint (MetaScreen *screen)
-{
- unsigned long data[1];
-
- if (screen->closing > 0)
- return 0;
-
- data[0] = meta_screen_get_n_workspaces (screen);
-
- 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 int
set_active_space_hint (MetaScreen *screen)
{
unsigned long data[1];