1
Index: gnome-settings-daemon-3.6.3/plugins/xsettings/gsd-xsettings-manager.c
2
===================================================================
3
--- gnome-settings-daemon-3.6.3.orig/plugins/xsettings/gsd-xsettings-manager.c 2012-11-07 10:08:12.000000000 +0100
4
+++ gnome-settings-daemon-3.6.3/plugins/xsettings/gsd-xsettings-manager.c 2012-11-20 13:26:46.306775857 +0100
8
guint shell_name_watch_id;
9
+ guint unity_name_watch_id;
11
+ gboolean have_unity;
19
-notify_have_shell (GnomeXSettingsManager *manager,
20
- gboolean have_shell)
21
+notify_have_shell (GnomeXSettingsManager *manager)
25
gnome_settings_profile_start (NULL);
26
- if (manager->priv->have_shell == have_shell)
28
- manager->priv->have_shell = have_shell;
29
for (i = 0; manager->priv->managers [i]; i++) {
30
- xsettings_manager_set_int (manager->priv->managers [i], "Gtk/ShellShowsAppMenu", have_shell);
31
+ /* Shell is showing appmenu if either GNOME Shell or Unity is running. */
32
+ xsettings_manager_set_int (manager->priv->managers [i], "Gtk/ShellShowsAppMenu",
33
+ manager->priv->have_shell || manager->priv->have_unity);
34
+ /* Shell is showing menubar *only* if Unity runs */
35
+ xsettings_manager_set_int (manager->priv->managers [i], "Gtk/ShellShowsMenubar",
36
+ manager->priv->have_unity);
38
queue_notify (manager);
39
gnome_settings_profile_end (NULL);
41
const gchar *name_owner,
44
- notify_have_shell (user_data, TRUE);
45
+ GnomeXSettingsManager *manager = user_data;
47
+ manager->priv->have_shell = TRUE;
48
+ notify_have_shell (manager);
56
- notify_have_shell (user_data, FALSE);
57
+ GnomeXSettingsManager *manager = user_data;
59
+ manager->priv->have_shell = FALSE;
60
+ notify_have_shell (manager);
64
+on_unity_appeared (GDBusConnection *connection,
66
+ const gchar *name_owner,
69
+ GnomeXSettingsManager *manager = user_data;
71
+ manager->priv->have_unity = TRUE;
72
+ notify_have_shell (manager);
76
+on_unity_disappeared (GDBusConnection *connection,
80
+ GnomeXSettingsManager *manager = user_data;
82
+ manager->priv->have_unity = FALSE;
83
+ notify_have_shell (manager);
89
start_shell_monitor (GnomeXSettingsManager *manager)
91
- notify_have_shell (manager, TRUE);
92
+ notify_have_shell (manager);
93
manager->priv->have_shell = TRUE;
94
manager->priv->shell_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
101
+start_unity_monitor (GnomeXSettingsManager *manager)
103
+ notify_have_shell (manager);
104
+ manager->priv->have_unity = TRUE;
105
+ manager->priv->unity_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
106
+ "com.canonical.AppMenu.Registrar",
109
+ on_unity_disappeared,
115
gnome_xsettings_manager_start (GnomeXSettingsManager *manager,
118
start_fontconfig_monitor (manager);
120
start_shell_monitor (manager);
121
+ start_unity_monitor (manager);
123
for (i = 0; manager->priv->managers [i]; i++)
124
xsettings_manager_set_string (manager->priv->managers [i],
126
if (manager->priv->shell_name_watch_id > 0)
127
g_bus_unwatch_name (manager->priv->shell_name_watch_id);
129
+ if (manager->priv->unity_name_watch_id > 0)
130
+ g_bus_unwatch_name (manager->priv->unity_name_watch_id);
132
if (p->settings != NULL) {
133
g_hash_table_destroy (p->settings);