@@ -562,7 +562,6 @@ static void
562562desktop_changed_callback (gpointer user_data )
563563{
564564 NemoApplication * application ;
565-
566565 application = NEMO_APPLICATION (user_data );
567566 if (g_settings_get_boolean (gnome_background_preferences , NEMO_PREFERENCES_SHOW_DESKTOP )) {
568567 nemo_application_open_desktop (application );
@@ -571,6 +570,17 @@ desktop_changed_callback (gpointer user_data)
571570 }
572571}
573572
573+ static void
574+ monitors_changed_callback (GdkScreen * screen , NemoApplication * application )
575+ {
576+ if (g_settings_get_boolean (gnome_background_preferences , NEMO_PREFERENCES_SHOW_DESKTOP )) {
577+ nemo_application_close_desktop ();
578+ nemo_application_open_desktop (application );
579+ } else {
580+ nemo_application_close_desktop ();
581+ }
582+ }
583+
574584static gboolean
575585window_can_be_closed (NemoWindow * window )
576586{
@@ -1046,6 +1056,8 @@ init_icons_and_styles (void)
10461056static void
10471057init_desktop (NemoApplication * self )
10481058{
1059+ GdkScreen * screen ;
1060+ screen = gdk_display_get_screen (gdk_display_get_default (), 0 );
10491061 /* Initialize the desktop link monitor singleton */
10501062 nemo_desktop_link_monitor_get ();
10511063
@@ -1063,6 +1075,10 @@ init_desktop (NemoApplication *self)
10631075 g_signal_connect_swapped (gnome_background_preferences , "changed::" NEMO_PREFERENCES_SHOW_DESKTOP ,
10641076 G_CALLBACK (desktop_changed_callback ),
10651077 self );
1078+
1079+ g_signal_connect (screen , "monitors-changed" ,
1080+ G_CALLBACK (monitors_changed_callback ),
1081+ self );
10661082}
10671083
10681084static gboolean
0 commit comments