summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-misc/redshift/files/1.6-bonoboiidfix.patch')
-rw-r--r--x11-misc/redshift/files/1.6-bonoboiidfix.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/x11-misc/redshift/files/1.6-bonoboiidfix.patch b/x11-misc/redshift/files/1.6-bonoboiidfix.patch
new file mode 100644
index 000000000000..b4f6c4de2749
--- /dev/null
+++ b/x11-misc/redshift/files/1.6-bonoboiidfix.patch
@@ -0,0 +1,43 @@
+Description: Handle newer versions of gnome-panel gconf schema.
+ In newer versions of gnome-panel (>2.30), the gconf identifier
+ name for bonobo_iid was renamed to applet_iid, this caused
+ redshift to be unable to locate the Clock Applet. This patch
+ attempts to use the legacy behaviour, and on failure to
+ retrieve the value uses the newer identifer.
+Author: Miloš Komarčević <kmilos@gmail.com>
+Bug: https://launchpad.net/bugs/706353
+Bug-Ubuntu: https://launchpad.net/bugs/706353
+Bug-Fedora: https://bugzilla.redhat.com/661145
+Bug-Gentoo: https://bugs.gentoo.org/365481
+
+--- a/src/location-gnome-clock.c
++++ b/src/location-gnome-clock.c
+@@ -104,11 +104,28 @@
+ char *bonobo_iid = gconf_client_get_string(client, key,
+ &error);
+
++ /* Try both gnome-panel 2.30.x and earlier bonobo_iid key and
++ newer applet_iid. */
+ if (!error && bonobo_iid != NULL &&
+ !strcmp(bonobo_iid, "OAFIID:GNOME_ClockApplet")) {
+ clock_applet_count += 1;
+ current_city = find_current_city(client, id);
+ }
++ else {
++ g_free(key);
++ key = g_strdup_printf("/apps/panel/applets/%s"
++ "/applet_iid", id);
++ char *applet_iid = gconf_client_get_string(client, key,
++ &error);
++
++ if (!error && applet_iid != NULL &&
++ !strcmp(applet_iid, "ClockAppletFactory::ClockApplet")) {
++ clock_applet_count += 1;
++ current_city = find_current_city(client, id);
++ }
++
++ g_free(applet_iid);
++ }
+
+ g_free(bonobo_iid);
+ g_free(key);