From d4fa668e674bbf38054aa8573539892738a1815d Mon Sep 17 00:00:00 2001 From: Jasmine Hassan Date: Sat, 1 Dec 2012 21:24:16 +0200 Subject: [background] listen for draw-background/show-desktop-icons changed signals Because we should handle the background drawing when either: - "draw-background" is re-enabled, or - "show-desktop-icons" is disabled. N.B. We may still need to consider this issue, which was never resolved in gnome, because they stopped auto-launching nautilus & removed it from 3.0 sessions: Nautilus registers with the session before it's ready. https://bugzilla.gnome.org/show_bug.cgi?id=568588 Would also be wise to import the (recent) changes made in the bug below: Provide a singleton SessionManager proxy object https://bugzilla.gnome.org/show_bug.cgi?id=686556 --- plugins/background/msd-background-manager.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'plugins/background/msd-background-manager.c') 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 -- cgit v1.2.1