diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/background/msd-background-manager.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/plugins/background/msd-background-manager.c b/plugins/background/msd-background-manager.c index 40d396b..c98a225 100644 --- a/plugins/background/msd-background-manager.c +++ b/plugins/background/msd-background-manager.c @@ -340,7 +340,8 @@ queue_draw_background (MsdBackgroundManager *manager) { manager->priv->timeout_id = 0; - setup_bg (manager); + if (manager->priv->bg == NULL) + setup_bg (manager); draw_background (manager, FALSE); @@ -467,6 +468,15 @@ connect_screen_signals (MsdBackgroundManager* manager) } } +static void +background_handling_changed (GSettings *settings, + const char *key, + MsdBackgroundManager *manager) +{ + if (dont_draw_background (manager) == FALSE) + queue_timeout (manager); +} + gboolean msd_background_manager_start (MsdBackgroundManager *manager, GError **error) @@ -477,6 +487,10 @@ msd_background_manager_start (MsdBackgroundManager *manager, mate_settings_profile_start(NULL); manager->priv->settings = g_settings_new (MATE_BG_SCHEMA); + g_signal_connect (manager->priv->settings, "changed::" MATE_BG_DRAW_BACKGROUND, + G_CALLBACK (background_handling_changed), manager); + g_signal_connect (manager->priv->settings, "changed::" MATE_BG_SHOW_DESKTOP_ICONS, + G_CALLBACK (background_handling_changed), manager); /* If this is set, caja will draw the background and is * almost definitely in our session. however, it may not be |