Gentoo Archives: gentoo-commits

From: Alexandre Rostovtsev <tetromino@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-menus/, gnome-base/gnome-menus/files/
Date: Sat, 24 Nov 2012 23:17:30
Message-Id: 1353799006.d83c36a408e0321d154e7b3d774c83b128ec6261.tetromino@gentoo
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