Index: xfce4-settings-helper/workspaces.c =================================================================== --- xfce4-settings-helper/workspaces.c (revision 28729) +++ xfce4-settings-helper/workspaces.c (working copy) @@ -38,7 +38,7 @@ { GObject parent; - WnckScreen *screen; + GdkScreen *screen; XfconfChannel *channel; }; @@ -52,7 +52,6 @@ static void xfce_workspaces_helper_finalize(GObject *obj); static void xfce_workspaces_helper_set_names_prop(XfceWorkspacesHelper *helper, - GdkScreen *screen, gchar **names); static void xfce_workspaces_helper_update_all_names(XfceWorkspacesHelper *helper); static void xfce_workspaces_helper_prop_changed(XfconfChannel *channel, @@ -77,16 +76,17 @@ { gint i, n_workspaces; gchar **names; - GdkDisplay *display; - GdkScreen *screen; + WnckScreen *screen; /* FIXME: need to do this for all screens? */ - helper->screen = wnck_screen_get_default(); - wnck_screen_force_update(helper->screen); - g_signal_connect_swapped(G_OBJECT(helper->screen), "workspace-created", + helper->screen = gdk_screen_get_default(); + + screen = wnck_screen_get(gdk_screen_get_number(helper->screen)); + wnck_screen_force_update(screen); + g_signal_connect_swapped(G_OBJECT(screen), "workspace-created", G_CALLBACK(xfce_workspaces_helper_update_all_names), helper); - g_signal_connect_swapped(G_OBJECT(helper->screen), "workspace-destroyed", + g_signal_connect_swapped(G_OBJECT(screen), "workspace-destroyed", G_CALLBACK(xfce_workspaces_helper_update_all_names), helper); @@ -94,7 +94,7 @@ names = xfconf_channel_get_string_list(helper->channel, WORKSPACE_NAMES_PROP); - n_workspaces = wnck_screen_get_workspace_count(helper->screen); + n_workspaces = wnck_screen_get_workspace_count(screen); if(G_UNLIKELY(!names)) names = g_new0(gchar *, n_workspaces + 1); else if(g_strv_length(names) < n_workspaces) @@ -106,9 +106,7 @@ } names[i] = NULL; - display = gdk_display_get_default(); - screen = gdk_display_get_screen(display, wnck_screen_get_number(helper->screen)); - xfce_workspaces_helper_set_names_prop(helper, screen, names); + xfce_workspaces_helper_set_names_prop(helper, names); g_signal_connect(G_OBJECT(helper->channel), "property-changed::" WORKSPACE_NAMES_PROP, @@ -138,7 +136,6 @@ static void xfce_workspaces_helper_set_names_prop(XfceWorkspacesHelper *helper, - GdkScreen *screen, gchar **names) { GString *names_str; @@ -151,7 +148,7 @@ gdk_error_trap_push(); - gdk_property_change(gdk_screen_get_root_window(screen), + gdk_property_change(gdk_screen_get_root_window(helper->screen), gdk_atom_intern_static_string("_NET_DESKTOP_NAMES"), gdk_atom_intern_static_string("UTF8_STRING"), 8, GDK_PROP_MODE_REPLACE, @@ -166,13 +163,16 @@ static void xfce_workspaces_helper_update_all_names(XfceWorkspacesHelper *helper) { - gint i, n_workspaces = wnck_screen_get_workspace_count(helper->screen); + gint i, n_workspaces; gchar const **names; + WnckScreen *screen; + screen = wnck_screen_get(gdk_screen_get_number(helper->screen)); + n_workspaces = wnck_screen_get_workspace_count(screen); names = g_new0(gchar const *, n_workspaces + 1); for(i = 0; i < n_workspaces; ++i) { - WnckWorkspace *space = wnck_screen_get_workspace(helper->screen, i); + WnckWorkspace *space = wnck_screen_get_workspace(screen, i); names[i] = wnck_workspace_get_name(space); } @@ -192,8 +192,7 @@ GPtrArray *names_arr; gint i, n_workspaces; gchar **names; - GdkDisplay *display; - GdkScreen *screen; + WnckScreen *screen; if(G_VALUE_TYPE(value) == G_TYPE_INVALID) return; @@ -210,8 +209,9 @@ if(!names_arr) return; - wnck_screen_force_update(helper->screen); - n_workspaces = wnck_screen_get_workspace_count(helper->screen); + screen = wnck_screen_get(gdk_screen_get_number(helper->screen)); + wnck_screen_force_update(screen); + n_workspaces = wnck_screen_get_workspace_count(screen); if(n_workspaces > names_arr->len) names = g_new0(gchar *, n_workspaces + 1); else { @@ -226,8 +226,6 @@ names[i] = g_strdup_printf(_("Workspace %d"), i + 1); } - display = gdk_display_get_default(); - screen = gdk_display_get_screen(display, wnck_screen_get_number(helper->screen)); - xfce_workspaces_helper_set_names_prop(helper, screen, names); + xfce_workspaces_helper_set_names_prop(helper, names); g_strfreev(names); }