--- gnome-settings-daemon-2.30.2/plugins/background/gsd-background-manager.c 2010-03-10 12:38:37.000000000 +0100
+++ gnome-settings-daemon-2.30.2.modified/plugins/background/gsd-background-manager.c 2011-02-04 13:58:17.525556370 +0100
@@ -48,6 +48,7 @@
#include "gsd-background-manager.h"
#define NAUTILUS_SHOW_DESKTOP_KEY "/apps/nautilus/preferences/show_desktop"
+#define FILEMANAGER_KEY "/desktop/gnome/session/required_components/filemanager"
#define GSD_BACKGROUND_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_BACKGROUND_MANAGER, GsdBackgroundManagerPrivate))
@@ -160,6 +161,28 @@
return running;
}
+static gboolean
+is_filemanager_gconf_set (GsdBackgroundManager *manager)
+{
+ gchar *nautilus_key = NULL;
+ gchar **str_len = NULL;
+ gboolean result = FALSE;
+
+ nautilus_key = gconf_client_get_string (manager->priv->client,
+ FILEMANAGER_KEY,
+ NULL);
+ if (nautilus_key != NULL) {
+ str_len = g_strsplit_set(nautilus_key," ", -1);
+ if (str_len != NULL && g_strv_length (str_len) > 0) {
+ g_strfreev (str_len);
+ result = TRUE;
+ }
+ g_free(nautilus_key);
+ }
+
+ return result;
+}
+
static void
draw_background (GsdBackgroundManager *manager,
gboolean use_crossfade)
@@ -172,6 +195,10 @@
return;
}
+ if (is_filemanager_gconf_set (manager)) {
+ use_crossfade = FALSE;
+ }
+
gnome_settings_profile_start (NULL);
display = gdk_display_get_default ();