Gentoo Archives: gentoo-commits

From: "Alexandre Rostovtsev (tetromino)" <tetromino@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in gnome-base/gnome-menus/files: gnome-menus-3.0.1-applications-merged.patch gnome-menus-3.6.1-applications-merged.patch
Date: Sat, 24 Nov 2012 23:43:50
Message-Id: 20121124234339.E0BC020C9F@flycatcher.gentoo.org
1 tetromino 12/11/24 23:43:39
2
3 Added: gnome-menus-3.0.1-applications-merged.patch
4 gnome-menus-3.6.1-applications-merged.patch
5 Log:
6 Correctly load custom menus from 'applications-merged' directories when XDG_MENU_PREFIX is set.
7
8 (Portage version: 2.2.0_alpha142/cvs/Linux x86_64, signed Manifest commit with key CF0ADD61)
9
10 Revision Changes Path
11 1.1 gnome-base/gnome-menus/files/gnome-menus-3.0.1-applications-merged.patch
12
13 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-base/gnome-menus/files/gnome-menus-3.0.1-applications-merged.patch?rev=1.1&view=markup
14 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-base/gnome-menus/files/gnome-menus-3.0.1-applications-merged.patch?rev=1.1&content-type=text/plain
15
16 Index: gnome-menus-3.0.1-applications-merged.patch
17 ===================================================================
18 From 15baddac6c5343eaa103ecd27c625f5a415d24f3 Mon Sep 17 00:00:00 2001
19 From: Alexandre Rostovtsev <tetromino@g.o>
20 Date: Sat, 24 Nov 2012 15:24:50 -0500
21 Subject: [PATCH] libmenu: always call menu_layout_load() with
22 non_prefixed_name parameter
23
24 We must ensure that when loading "${XDG_MENU_PREFIX}applications.menu",
25 the root layout node's name is set to "applications", not
26 "${XDG_MENU_PREFIX}applications", because the menu spec states that the
27 default merge directory for "${XDG_MENU_PREFIX}applications.menu" is
28 "applications-merged", not "${XDG_MENU_PREFIX}applications-merged".
29
30 https://bugzilla.gnome.org/show_bug.cgi?id=688972
31 ---
32 libmenu/gmenu-tree.c | 29 ++++++++++++++++++++++++++---
33 1 file changed, 26 insertions(+), 3 deletions(-)
34
35 diff --git a/libmenu/gmenu-tree.c b/libmenu/gmenu-tree.c
36 index 0cb9645..a0d85d6 100644
37 --- a/libmenu/gmenu-tree.c
38 +++ b/libmenu/gmenu-tree.c
39 @@ -47,6 +47,7 @@ struct GMenuTree
40 guint refcount;
41
42 char *basename;
43 + char *non_prefixed_basename;
44 char *absolute_path;
45 char *canonical_path;
46
47 @@ -630,6 +631,24 @@ gmenu_tree_lookup (const char *menu_file,
48 return retval;
49 }
50
51 +static void
52 +gmenu_tree_update_non_prefixed_basename (GMenuTree *tree,
53 + const gchar *filename)
54 +{
55 + gchar *s, *basename;
56 +
57 + g_free (tree->non_prefixed_basename);
58 + tree->non_prefixed_basename = NULL;
59 + if (filename == NULL)
60 + return;
61 + s = g_strdup_printf ("%sapplications.menu", g_getenv ("XDG_MENU_PREFIX"));
62 + basename = g_path_get_basename (filename);
63 + if (!g_strcmp0 (basename, "applications.menu") || !g_strcmp0 (basename, s))
64 + tree->non_prefixed_basename = g_strdup ("applications.menu");
65 + g_free (s);
66 + g_free (basename);
67 +}
68 +
69 static GMenuTree *
70 gmenu_tree_new (GMenuTreeType type,
71 const char *menu_file,
72 @@ -650,11 +669,13 @@ gmenu_tree_new (GMenuTreeType type,
73 {
74 g_assert (canonical == FALSE);
75 tree->basename = g_strdup (menu_file);
76 + gmenu_tree_update_non_prefixed_basename (tree, tree->basename);
77 }
78 else
79 {
80 tree->canonical = canonical != FALSE;
81 tree->absolute_path = g_strdup (menu_file);
82 + gmenu_tree_update_non_prefixed_basename (tree, tree->absolute_path);
83
84 if (tree->canonical)
85 {
86 @@ -709,6 +730,9 @@ gmenu_tree_unref (GMenuTree *tree)
87 g_free (tree->basename);
88 tree->basename = NULL;
89
90 + g_free (tree->non_prefixed_basename);
91 + tree->non_prefixed_basename = NULL;
92 +
93 if (tree->absolute_path != NULL)
94 g_free (tree->absolute_path);
95 tree->absolute_path = NULL;
96 @@ -1768,7 +1792,7 @@ load_merge_file (GMenuTree *tree,
97
98 menu_verbose ("Merging file \"%s\"\n", canonical);
99
100 - to_merge = menu_layout_load (canonical, NULL, NULL);
101 + to_merge = menu_layout_load (canonical, tree->non_prefixed_basename, NULL);
102 if (to_merge == NULL)
103 {
104 menu_verbose ("No menu for file \"%s\" found when merging\n",
105 @@ -2926,8 +2950,7 @@ gmenu_tree_load_layout (GMenuTree *tree)
106
107 error = NULL;
108 tree->layout = menu_layout_load (tree->canonical_path,
109 - tree->type == GMENU_TREE_BASENAME ?
110 - tree->basename : NULL,
111 + tree->non_prefixed_basename,
112 &error);
113 if (tree->layout == NULL)
114 {
115 --
116 1.8.0
117
118
119
120
121 1.1 gnome-base/gnome-menus/files/gnome-menus-3.6.1-applications-merged.patch
122
123 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-base/gnome-menus/files/gnome-menus-3.6.1-applications-merged.patch?rev=1.1&view=markup
124 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-base/gnome-menus/files/gnome-menus-3.6.1-applications-merged.patch?rev=1.1&content-type=text/plain
125
126 Index: gnome-menus-3.6.1-applications-merged.patch
127 ===================================================================
128 From e047041a49ad9e857b97c534203a98aac80de8d8 Mon Sep 17 00:00:00 2001
129 From: Alexandre Rostovtsev <tetromino@g.o>
130 Date: Sat, 24 Nov 2012 15:24:50 -0500
131 Subject: [PATCH] libmenu: always call menu_layout_load() with
132 non_prefixed_name parameter
133
134 We must ensure that when loading "${XDG_MENU_PREFIX}applications.menu",
135 the root layout node's name is set to "applications", not
136 "${XDG_MENU_PREFIX}applications", because the menu spec states that the
137 default merge directory for "${XDG_MENU_PREFIX}applications.menu" is
138 "applications-merged", not "${XDG_MENU_PREFIX}applications-merged".
139
140 https://bugzilla.gnome.org/show_bug.cgi?id=688972
141 ---
142 libmenu/gmenu-tree.c | 31 +++++++++++++++++++++++++++++--
143 1 file changed, 29 insertions(+), 2 deletions(-)
144
145 diff --git a/libmenu/gmenu-tree.c b/libmenu/gmenu-tree.c
146 index 3e59c2c..dd6c670 100644
147 --- a/libmenu/gmenu-tree.c
148 +++ b/libmenu/gmenu-tree.c
149 @@ -60,6 +60,7 @@ struct _GMenuTree
150 GObject parent_instance;
151
152 char *basename;
153 + char *non_prefixed_basename;
154 char *path;
155 char *canonical_path;
156
157 @@ -524,6 +525,24 @@ gmenu_tree_constructor (GType type,
158 }
159
160 static void
161 +gmenu_tree_update_non_prefixed_basename (GMenuTree *tree,
162 + const gchar *filename)
163 +{
164 + gchar *s, *basename;
165 +
166 + g_free (tree->non_prefixed_basename);
167 + tree->non_prefixed_basename = NULL;
168 + if (filename == NULL)
169 + return;
170 + s = g_strdup_printf ("%sapplications.menu", g_getenv ("XDG_MENU_PREFIX"));
171 + basename = g_path_get_basename (filename);
172 + if (!g_strcmp0 (basename, "applications.menu") || !g_strcmp0 (basename, s))
173 + tree->non_prefixed_basename = g_strdup ("applications.menu");
174 + g_free (s);
175 + g_free (basename);
176 +}
177 +
178 +static void
179 gmenu_tree_set_property (GObject *object,
180 guint prop_id,
181 const GValue *value,
182 @@ -534,10 +553,14 @@ gmenu_tree_set_property (GObject *object,
183 switch (prop_id)
184 {
185 case PROP_MENU_BASENAME:
186 + if (g_strcmp0 (self->basename, g_value_get_string (value)))
187 + gmenu_tree_update_non_prefixed_basename (self, g_value_get_string (value));
188 self->basename = g_value_dup_string (value);
189 break;
190
191 case PROP_MENU_PATH:
192 + if (g_strcmp0 (self->path, g_value_get_string (value)))
193 + gmenu_tree_update_non_prefixed_basename (self, g_value_get_string (value));
194 self->path = g_value_dup_string (value);
195 break;
196
197 @@ -587,6 +610,9 @@ gmenu_tree_finalize (GObject *object)
198 g_free (tree->basename);
199 tree->basename = NULL;
200
201 + g_free (tree->non_prefixed_basename);
202 + tree->non_prefixed_basename = NULL;
203 +
204 if (tree->path != NULL)
205 g_free (tree->path);
206 tree->path = NULL;
207 @@ -1896,7 +1922,7 @@ load_merge_file (GMenuTree *tree,
208
209 menu_verbose ("Merging file \"%s\"\n", canonical);
210
211 - to_merge = menu_layout_load (canonical, NULL, NULL);
212 + to_merge = menu_layout_load (canonical, tree->non_prefixed_basename, NULL);
213 if (to_merge == NULL)
214 {
215 menu_verbose ("No menu for file \"%s\" found when merging\n",
216 @@ -3053,8 +3079,9 @@ gmenu_tree_load_layout (GMenuTree *tree,
217 tree->canonical_path);
218
219 error = NULL;
220 +
221 tree->layout = menu_layout_load (tree->canonical_path,
222 - tree->path ? NULL : tree->basename,
223 + tree->non_prefixed_basename,
224 error);
225 if (!tree->layout)
226 return FALSE;
227 --
228 1.8.0