1 |
commit: d83c36a408e0321d154e7b3d774c83b128ec6261 |
2 |
Author: Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Nov 24 23:14:08 2012 +0000 |
4 |
Commit: Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Nov 24 23:16:46 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=d83c36a4 |
7 |
|
8 |
gnome-base/gnome-menus: correctly load custom menus from "applications-merged" |
9 |
|
10 |
See https://bugzilla.gnome.org/show_bug.cgi?id=688972 |
11 |
|
12 |
--- |
13 |
.../gnome-menus-3.6.1-applications-merged.patch | 102 ++++++++++++++++++++ |
14 |
...us-3.6.1.ebuild => gnome-menus-3.6.1-r1.ebuild} | 3 + |
15 |
2 files changed, 105 insertions(+), 0 deletions(-) |
16 |
|
17 |
diff --git a/gnome-base/gnome-menus/files/gnome-menus-3.6.1-applications-merged.patch b/gnome-base/gnome-menus/files/gnome-menus-3.6.1-applications-merged.patch |
18 |
new file mode 100644 |
19 |
index 0000000..ada08df |
20 |
--- /dev/null |
21 |
+++ b/gnome-base/gnome-menus/files/gnome-menus-3.6.1-applications-merged.patch |
22 |
@@ -0,0 +1,102 @@ |
23 |
+From e047041a49ad9e857b97c534203a98aac80de8d8 Mon Sep 17 00:00:00 2001 |
24 |
+From: Alexandre Rostovtsev <tetromino@g.o> |
25 |
+Date: Sat, 24 Nov 2012 15:24:50 -0500 |
26 |
+Subject: [PATCH] libmenu: always call menu_layout_load() with |
27 |
+ non_prefixed_name parameter |
28 |
+ |
29 |
+We must ensure that when loading "${XDG_MENU_PREFIX}applications.menu", |
30 |
+the root layout node's name is set to "applications", not |
31 |
+"${XDG_MENU_PREFIX}applications", because the menu spec states that the |
32 |
+default merge directory for "${XDG_MENU_PREFIX}applications.menu" is |
33 |
+"applications-merged", not "${XDG_MENU_PREFIX}applications-merged". |
34 |
+ |
35 |
+https://bugzilla.gnome.org/show_bug.cgi?id=688972 |
36 |
+--- |
37 |
+ libmenu/gmenu-tree.c | 31 +++++++++++++++++++++++++++++-- |
38 |
+ 1 file changed, 29 insertions(+), 2 deletions(-) |
39 |
+ |
40 |
+diff --git a/libmenu/gmenu-tree.c b/libmenu/gmenu-tree.c |
41 |
+index 3e59c2c..dd6c670 100644 |
42 |
+--- a/libmenu/gmenu-tree.c |
43 |
++++ b/libmenu/gmenu-tree.c |
44 |
+@@ -60,6 +60,7 @@ struct _GMenuTree |
45 |
+ GObject parent_instance; |
46 |
+ |
47 |
+ char *basename; |
48 |
++ char *non_prefixed_basename; |
49 |
+ char *path; |
50 |
+ char *canonical_path; |
51 |
+ |
52 |
+@@ -524,6 +525,24 @@ gmenu_tree_constructor (GType type, |
53 |
+ } |
54 |
+ |
55 |
+ static void |
56 |
++gmenu_tree_update_non_prefixed_basename (GMenuTree *tree, |
57 |
++ const gchar *filename) |
58 |
++{ |
59 |
++ gchar *s, *basename; |
60 |
++ |
61 |
++ g_free (tree->non_prefixed_basename); |
62 |
++ tree->non_prefixed_basename = NULL; |
63 |
++ if (filename == NULL) |
64 |
++ return; |
65 |
++ s = g_strdup_printf ("%sapplications.menu", g_getenv ("XDG_MENU_PREFIX")); |
66 |
++ basename = g_path_get_basename (filename); |
67 |
++ if (!g_strcmp0 (basename, "applications.menu") || !g_strcmp0 (basename, s)) |
68 |
++ tree->non_prefixed_basename = g_strdup ("applications.menu"); |
69 |
++ g_free (s); |
70 |
++ g_free (basename); |
71 |
++} |
72 |
++ |
73 |
++static void |
74 |
+ gmenu_tree_set_property (GObject *object, |
75 |
+ guint prop_id, |
76 |
+ const GValue *value, |
77 |
+@@ -534,10 +553,14 @@ gmenu_tree_set_property (GObject *object, |
78 |
+ switch (prop_id) |
79 |
+ { |
80 |
+ case PROP_MENU_BASENAME: |
81 |
++ if (g_strcmp0 (self->basename, g_value_get_string (value))) |
82 |
++ gmenu_tree_update_non_prefixed_basename (self, g_value_get_string (value)); |
83 |
+ self->basename = g_value_dup_string (value); |
84 |
+ break; |
85 |
+ |
86 |
+ case PROP_MENU_PATH: |
87 |
++ if (g_strcmp0 (self->path, g_value_get_string (value))) |
88 |
++ gmenu_tree_update_non_prefixed_basename (self, g_value_get_string (value)); |
89 |
+ self->path = g_value_dup_string (value); |
90 |
+ break; |
91 |
+ |
92 |
+@@ -587,6 +610,9 @@ gmenu_tree_finalize (GObject *object) |
93 |
+ g_free (tree->basename); |
94 |
+ tree->basename = NULL; |
95 |
+ |
96 |
++ g_free (tree->non_prefixed_basename); |
97 |
++ tree->non_prefixed_basename = NULL; |
98 |
++ |
99 |
+ if (tree->path != NULL) |
100 |
+ g_free (tree->path); |
101 |
+ tree->path = NULL; |
102 |
+@@ -1896,7 +1922,7 @@ load_merge_file (GMenuTree *tree, |
103 |
+ |
104 |
+ menu_verbose ("Merging file \"%s\"\n", canonical); |
105 |
+ |
106 |
+- to_merge = menu_layout_load (canonical, NULL, NULL); |
107 |
++ to_merge = menu_layout_load (canonical, tree->non_prefixed_basename, NULL); |
108 |
+ if (to_merge == NULL) |
109 |
+ { |
110 |
+ menu_verbose ("No menu for file \"%s\" found when merging\n", |
111 |
+@@ -3053,8 +3079,9 @@ gmenu_tree_load_layout (GMenuTree *tree, |
112 |
+ tree->canonical_path); |
113 |
+ |
114 |
+ error = NULL; |
115 |
++ |
116 |
+ tree->layout = menu_layout_load (tree->canonical_path, |
117 |
+- tree->path ? NULL : tree->basename, |
118 |
++ tree->non_prefixed_basename, |
119 |
+ error); |
120 |
+ if (!tree->layout) |
121 |
+ return FALSE; |
122 |
+-- |
123 |
+1.8.0 |
124 |
+ |
125 |
|
126 |
diff --git a/gnome-base/gnome-menus/gnome-menus-3.6.1.ebuild b/gnome-base/gnome-menus/gnome-menus-3.6.1-r1.ebuild |
127 |
similarity index 96% |
128 |
rename from gnome-base/gnome-menus/gnome-menus-3.6.1.ebuild |
129 |
rename to gnome-base/gnome-menus/gnome-menus-3.6.1-r1.ebuild |
130 |
index fd88fb6..3eeb7fc 100644 |
131 |
--- a/gnome-base/gnome-menus/gnome-menus-3.6.1.ebuild |
132 |
+++ b/gnome-base/gnome-menus/gnome-menus-3.6.1-r1.ebuild |
133 |
@@ -69,6 +69,9 @@ src_prepare() { |
134 |
# Don't show KDE standalone settings desktop files in GNOME others menu |
135 |
epatch "${FILESDIR}/${PN}-3.0.0-ignore_kde_standalone.patch" |
136 |
|
137 |
+ # https://bugzilla.gnome.org/show_bug.cgi?id=688972 |
138 |
+ epatch "${FILESDIR}/${PN}-3.6.1-applications-merged.patch" |
139 |
+ |
140 |
if use python; then |
141 |
python_clean_py-compile_files |
142 |
python_copy_sources |