summaryrefslogtreecommitdiff
blob: b4f6c4de27497b50231e14a4f61f3a6fcff82f6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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);