From a8ce4bc05f6be1c1114ed202108bd1d18fc13e25 Mon Sep 17 00:00:00 2001 From: Michael Webster Date: Sat, 15 Sep 2012 11:15:51 -0400 Subject: [PATCH] Added a listener for monitor configuration changes (adding a monitor, removing, changing primary, rearranging) - all these things leave the Nemo-managed desktop in a weird state. --- src/nemo-application.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/nemo-application.c b/src/nemo-application.c index 664749abc..8b30dd678 100644 --- a/src/nemo-application.c +++ b/src/nemo-application.c @@ -562,7 +562,6 @@ static void desktop_changed_callback (gpointer user_data) { NemoApplication *application; - application = NEMO_APPLICATION (user_data); if (g_settings_get_boolean (gnome_background_preferences, NEMO_PREFERENCES_SHOW_DESKTOP)) { nemo_application_open_desktop (application); @@ -571,6 +570,17 @@ desktop_changed_callback (gpointer user_data) } } +static void +monitors_changed_callback (GdkScreen *screen, NemoApplication *application) +{ + if (g_settings_get_boolean (gnome_background_preferences, NEMO_PREFERENCES_SHOW_DESKTOP)) { + nemo_application_close_desktop (); + nemo_application_open_desktop (application); + } else { + nemo_application_close_desktop (); + } +} + static gboolean window_can_be_closed (NemoWindow *window) { @@ -1046,6 +1056,8 @@ init_icons_and_styles (void) static void init_desktop (NemoApplication *self) { + GdkScreen *screen; + screen = gdk_display_get_screen (gdk_display_get_default (), 0); /* Initialize the desktop link monitor singleton */ nemo_desktop_link_monitor_get (); @@ -1063,6 +1075,10 @@ init_desktop (NemoApplication *self) g_signal_connect_swapped (gnome_background_preferences, "changed::" NEMO_PREFERENCES_SHOW_DESKTOP, G_CALLBACK (desktop_changed_callback), self); + + g_signal_connect (screen, "monitors-changed", + G_CALLBACK (monitors_changed_callback), + self); } static gboolean