~attente/gnome-settings-daemon/1318539

« back to all changes in this revision

Viewing changes to debian/patches/90_set_gmenus_xsettings.patch

  • Committer: Tim Lunn
  • Date: 2014-05-12 08:41:47 UTC
  • Revision ID: tim@feathertop.org-20140512084147-kn3ngcx05yttyr96
* Drop all Unity patches and legacy features (LP: #1318539)
  - Keep schemas for background plugin, since they are used by u-s-d
* debian/patches: Refreshed
  - git_new_screencast_keybinding.patch
  - git_xsettings_segfaults.patch
* debian/control.in: Fix lintian warnings
  - gnome-settings-daemon-schemas add ${misc:Depends}
  - gnome-settings-daemon fix binNMUable error for gnome-settings-daemon-schemas
* Bump standards to 3.9.5 (No changes)

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
5
 
@@ -242,7 +242,9 @@
6
 
         GsdXSettingsGtk   *gtk;
7
 
 
8
 
         guint              shell_name_watch_id;
9
 
+        guint              unity_name_watch_id;
10
 
         gboolean           have_shell;
11
 
+        gboolean           have_unity;
12
 
 
13
 
         guint              notify_idle_id;
14
 
 };
15
 
@@ -703,17 +705,18 @@
16
 
 }
17
 
 
18
 
 static void
19
 
-notify_have_shell (GnomeXSettingsManager   *manager,
20
 
-                   gboolean                 have_shell)
21
 
+notify_have_shell (GnomeXSettingsManager   *manager)
22
 
 {
23
 
         int i;
24
 
 
25
 
         gnome_settings_profile_start (NULL);
26
 
-        if (manager->priv->have_shell == have_shell)
27
 
-                return;
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);
37
 
         }
38
 
         queue_notify (manager);
39
 
         gnome_settings_profile_end (NULL);
40
 
@@ -725,7 +728,10 @@
41
 
                    const gchar     *name_owner,
42
 
                    gpointer         user_data)
43
 
 {
44
 
-        notify_have_shell (user_data, TRUE);
45
 
+        GnomeXSettingsManager *manager = user_data;
46
 
+
47
 
+        manager->priv->have_shell = TRUE;
48
 
+        notify_have_shell (manager);
49
 
 }
50
 
 
51
 
 static void
52
 
@@ -733,7 +739,33 @@
53
 
                       const gchar     *name,
54
 
                       gpointer         user_data)
55
 
 {
56
 
-        notify_have_shell (user_data, FALSE);
57
 
+        GnomeXSettingsManager *manager = user_data;
58
 
+
59
 
+        manager->priv->have_shell = FALSE;
60
 
+        notify_have_shell (manager);
61
 
+}
62
 
+
63
 
+static void
64
 
+on_unity_appeared (GDBusConnection *connection,
65
 
+                   const gchar     *name,
66
 
+                   const gchar     *name_owner,
67
 
+                   gpointer         user_data)
68
 
+{
69
 
+        GnomeXSettingsManager *manager = user_data;
70
 
+
71
 
+        manager->priv->have_unity = TRUE;
72
 
+        notify_have_shell (manager);
73
 
+}
74
 
+
75
 
+static void
76
 
+on_unity_disappeared (GDBusConnection *connection,
77
 
+                      const gchar     *name,
78
 
+                      gpointer         user_data)
79
 
+{
80
 
+        GnomeXSettingsManager *manager = user_data;
81
 
+
82
 
+        manager->priv->have_unity = FALSE;
83
 
+        notify_have_shell (manager);
84
 
 }
85
 
 
86
 
 static void
87
 
@@ -856,7 +888,7 @@
88
 
 static void
89
 
 start_shell_monitor (GnomeXSettingsManager *manager)
90
 
 {
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,
95
 
                                                                "org.gnome.Shell",
96
 
@@ -867,6 +899,20 @@
97
 
                                                                NULL);
98
 
 }
99
 
 
100
 
+static void
101
 
+start_unity_monitor (GnomeXSettingsManager *manager)
102
 
+{
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",
107
 
+                                                               0,
108
 
+                                                               on_unity_appeared,
109
 
+                                                               on_unity_disappeared,
110
 
+                                                               manager,
111
 
+                                                               NULL);
112
 
+}
113
 
+
114
 
 gboolean
115
 
 gnome_xsettings_manager_start (GnomeXSettingsManager *manager,
116
 
                                GError               **error)
117
 
@@ -933,6 +979,7 @@
118
 
         start_fontconfig_monitor (manager);
119
 
 
120
 
         start_shell_monitor (manager);
121
 
+        start_unity_monitor (manager);
122
 
 
123
 
         for (i = 0; manager->priv->managers [i]; i++)
124
 
                 xsettings_manager_set_string (manager->priv->managers [i],
125
 
@@ -978,6 +1025,9 @@
126
 
         if (manager->priv->shell_name_watch_id > 0)
127
 
                 g_bus_unwatch_name (manager->priv->shell_name_watch_id);
128
 
 
129
 
+        if (manager->priv->unity_name_watch_id > 0)
130
 
+                g_bus_unwatch_name (manager->priv->unity_name_watch_id);
131
 
+
132
 
         if (p->settings != NULL) {
133
 
                 g_hash_table_destroy (p->settings);
134
 
                 p->settings = NULL;