Updating branch refs/heads/eric/wallpaper-and-settings-improvements to bcd164f4e460f1cdaff1db4287a1109518f895e5 (commit) from 9ca8aea6d217d72f95287b9750d152eca734a3eb (commit)
commit bcd164f4e460f1cdaff1db4287a1109518f895e5 Author: Eric Koegel <eric.koe...@gmail.com> Date: Sat Mar 30 09:03:43 2013 +0300 Respond to monitors-changed events settings/main.c | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) diff --git a/settings/main.c b/settings/main.c index d10dec2..fab16f9 100644 --- a/settings/main.c +++ b/settings/main.c @@ -1052,6 +1052,7 @@ cb_update_background_tab(WnckWindow *wnck_window, { AppearancePanel *panel = user_data; gint screen_num, monitor_num, workspace_num; + gchar *monitor_name = NULL; WnckWorkspace *wnck_workspace = NULL; GdkScreen *screen; @@ -1062,11 +1063,13 @@ cb_update_background_tab(WnckWindow *wnck_window, screen_num = gdk_screen_get_number(screen); monitor_num = gdk_screen_get_monitor_at_window(screen, gtk_widget_get_window(panel->image_iconview)); + monitor_name = gdk_screen_get_monitor_plug_name(screen, monitor_num); /* Check to see if something changed */ if(panel->workspace == workspace_num && panel->screen == screen_num && - panel->monitor == monitor_num) { + panel->monitor_name != NULL && + g_strcmp0(panel->monitor_name, monitor_name) == 0) { return; } @@ -1108,17 +1111,27 @@ cb_update_background_tab(WnckWindow *wnck_window, static void cb_workspace_changed(WnckScreen *screen, - WnckWorkspace *workspace, - gpointer user_data) + WnckWorkspace *workspace, + gpointer user_data) { AppearancePanel *panel = user_data; - /* Call update background because the single workspace mode may have + /* Update background because the single workspace mode may have * changed due to the addition/removal of a workspace */ cb_update_background_tab(panel->wnck_window, user_data); } static void +cb_monitor_changed(GdkScreen *gscreen, + gpointer user_data) +{ + AppearancePanel *panel = user_data; + + /* Update background because the monitor we're on may have changed */ + cb_update_background_tab(panel->wnck_window, user_data); +} + +static void cb_xfdesktop_chk_apply_to_all(GtkCheckButton *button, gpointer user_data) { @@ -1252,6 +1265,8 @@ xfdesktop_settings_dialog_setup_tabs(GtkBuilder *main_gxml, G_CALLBACK(cb_workspace_changed), panel); g_signal_connect(wnck_screen, "workspace-destroyed", G_CALLBACK(cb_workspace_changed), panel); + g_signal_connect(G_OBJECT(screen), "monitors-changed", + G_CALLBACK(cb_monitor_changed), panel); /* send invalid numbers so that the update_background_tab will update everything */ panel->monitor = -1; _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits