1 |
commit: 175e747b92cc77c92fc45dccff3e24859e9f9f07 |
2 |
Author: Pacho Ramos <pacho <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Dec 26 14:42:49 2015 +0000 |
4 |
Commit: Pacho Ramos <pacho <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Dec 26 15:28:38 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=175e747b |
7 |
|
8 |
gnome-base/gnome-menus: Upstream patch for handling of multiple desktops in XDG_CURRENT_DESKTOP |
9 |
|
10 |
Package-Manager: portage-2.2.26 |
11 |
|
12 |
.../gnome-menus-3.13.3-multiple-desktop.patch | 171 +++++++++++++++++++++ |
13 |
.../gnome-menus-3.13.3-multiple-desktop2.patch | 27 ++++ |
14 |
.../gnome-menus/gnome-menus-3.13.3-r1.ebuild | 53 +++++++ |
15 |
3 files changed, 251 insertions(+) |
16 |
|
17 |
diff --git a/gnome-base/gnome-menus/files/gnome-menus-3.13.3-multiple-desktop.patch b/gnome-base/gnome-menus/files/gnome-menus-3.13.3-multiple-desktop.patch |
18 |
new file mode 100644 |
19 |
index 0000000..8ec7006 |
20 |
--- /dev/null |
21 |
+++ b/gnome-base/gnome-menus/files/gnome-menus-3.13.3-multiple-desktop.patch |
22 |
@@ -0,0 +1,171 @@ |
23 |
+From b4546ab43c2c7ef6fb6cb7e5db83dc3975b56e8e Mon Sep 17 00:00:00 2001 |
24 |
+From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= <alberts.muktupavels@×××××.com> |
25 |
+Date: Mon, 27 Oct 2014 18:41:34 +0200 |
26 |
+Subject: desktop-entries: support multiple desktops in XDG_CURRENT_DESKTOP |
27 |
+ |
28 |
+This is based on glib commit: |
29 |
+5a5e16e93c4f11e635918ecdb41681f63fd05a39 |
30 |
+--- |
31 |
+ libmenu/desktop-entries.c | 110 ++++++++++++++++++++++------------------------ |
32 |
+ 1 file changed, 52 insertions(+), 58 deletions(-) |
33 |
+ |
34 |
+diff --git a/libmenu/desktop-entries.c b/libmenu/desktop-entries.c |
35 |
+index 326f311..bd4f886 100644 |
36 |
+--- a/libmenu/desktop-entries.c |
37 |
++++ b/libmenu/desktop-entries.c |
38 |
+@@ -85,32 +85,27 @@ unix_basename_from_path (const char *path) |
39 |
+ return path; |
40 |
+ } |
41 |
+ |
42 |
+-static const char * |
43 |
+-get_current_desktop (void) |
44 |
++static const gchar * const * |
45 |
++get_current_desktops (void) |
46 |
+ { |
47 |
+- static char *current_desktop = NULL; |
48 |
++ static gchar **result; |
49 |
+ |
50 |
+- /* Support XDG_CURRENT_DESKTOP environment variable; this can be used |
51 |
+- * to abuse gnome-menus in non-GNOME desktops. */ |
52 |
+- if (!current_desktop) |
53 |
++ if (g_once_init_enter (&result)) |
54 |
+ { |
55 |
+- const char *desktop; |
56 |
++ const gchar *desktops; |
57 |
++ gchar **tmp; |
58 |
+ |
59 |
+- desktop = g_getenv ("XDG_CURRENT_DESKTOP"); |
60 |
++ desktops = g_getenv ("XDG_CURRENT_DESKTOP"); |
61 |
+ |
62 |
+- /* Note: if XDG_CURRENT_DESKTOP is set but empty, do as if it |
63 |
+- * was not set */ |
64 |
+- if (!desktop || desktop[0] == '\0') |
65 |
+- current_desktop = g_strdup ("GNOME"); |
66 |
+- else |
67 |
+- current_desktop = g_strdup (desktop); |
68 |
+- } |
69 |
++ if (desktops) |
70 |
++ desktops = ""; |
71 |
+ |
72 |
+- /* Using "*" means skipping desktop-related checks */ |
73 |
+- if (g_strcmp0 (current_desktop, "*") == 0) |
74 |
+- return NULL; |
75 |
++ tmp = g_strsplit (desktops, ":", 0); |
76 |
++ |
77 |
++ g_once_init_leave (&result, tmp); |
78 |
++ } |
79 |
+ |
80 |
+- return current_desktop; |
81 |
++ return (const gchar **) result; |
82 |
+ } |
83 |
+ |
84 |
+ static GIcon * |
85 |
+@@ -151,52 +146,58 @@ key_file_get_icon (GKeyFile *key_file) |
86 |
+ static gboolean |
87 |
+ key_file_get_show_in (GKeyFile *key_file) |
88 |
+ { |
89 |
+- const gchar *current_desktop; |
90 |
+- gchar **strv; |
91 |
++ const gchar * const *current_desktops; |
92 |
++ gchar **only_show_in; |
93 |
++ gchar **not_show_in; |
94 |
+ gboolean show_in = TRUE; |
95 |
+- int i; |
96 |
+- |
97 |
+- current_desktop = get_current_desktop (); |
98 |
+- if (!current_desktop) |
99 |
+- return TRUE; |
100 |
+- |
101 |
+- strv = g_key_file_get_string_list (key_file, |
102 |
+- DESKTOP_ENTRY_GROUP, |
103 |
+- "OnlyShowIn", |
104 |
+- NULL, |
105 |
+- NULL); |
106 |
+- if (strv) |
107 |
++ gint i; |
108 |
++ |
109 |
++ current_desktops = get_current_desktops (); |
110 |
++ only_show_in = g_key_file_get_string_list (key_file, |
111 |
++ DESKTOP_ENTRY_GROUP, |
112 |
++ "OnlyShowIn", |
113 |
++ NULL, |
114 |
++ NULL); |
115 |
++ not_show_in = g_key_file_get_string_list (key_file, |
116 |
++ DESKTOP_ENTRY_GROUP, |
117 |
++ "NotShowIn", |
118 |
++ NULL, |
119 |
++ NULL); |
120 |
++ |
121 |
++ for (i = 0; current_desktops[i]; i++) |
122 |
+ { |
123 |
+- show_in = FALSE; |
124 |
+- for (i = 0; strv[i]; i++) |
125 |
++ gint j; |
126 |
++ |
127 |
++ if (only_show_in) |
128 |
+ { |
129 |
+- if (!strcmp (strv[i], current_desktop)) |
130 |
++ show_in = FALSE; |
131 |
++ for (j = 0; only_show_in[j]; j++) |
132 |
+ { |
133 |
+- show_in = TRUE; |
134 |
+- break; |
135 |
++ if (g_str_equal (only_show_in[j], current_desktops[i])) |
136 |
++ { |
137 |
++ show_in = TRUE; |
138 |
++ goto out; |
139 |
++ } |
140 |
+ } |
141 |
+ } |
142 |
+- } |
143 |
+- else |
144 |
+- { |
145 |
+- strv = g_key_file_get_string_list (key_file, |
146 |
+- DESKTOP_ENTRY_GROUP, |
147 |
+- "NotShowIn", |
148 |
+- NULL, |
149 |
+- NULL); |
150 |
+- if (strv) |
151 |
++ |
152 |
++ if (not_show_in) |
153 |
+ { |
154 |
+ show_in = TRUE; |
155 |
+- for (i = 0; strv[i]; i++) |
156 |
++ for (j = 0; not_show_in[j]; j++) |
157 |
+ { |
158 |
+- if (!strcmp (strv[i], current_desktop)) |
159 |
++ if (g_str_equal (not_show_in[j], current_desktops[i])) |
160 |
+ { |
161 |
+ show_in = FALSE; |
162 |
++ goto out; |
163 |
+ } |
164 |
+ } |
165 |
+ } |
166 |
+ } |
167 |
+- g_strfreev (strv); |
168 |
++ |
169 |
++out: |
170 |
++ g_strfreev (only_show_in); |
171 |
++ g_strfreev (not_show_in); |
172 |
+ |
173 |
+ return show_in; |
174 |
+ } |
175 |
+@@ -579,14 +580,7 @@ gboolean |
176 |
+ desktop_entry_get_show_in (DesktopEntry *entry) |
177 |
+ { |
178 |
+ if (entry->type == DESKTOP_ENTRY_DESKTOP) |
179 |
+- { |
180 |
+- const char *current_desktop = get_current_desktop (); |
181 |
+- |
182 |
+- if (current_desktop == NULL) |
183 |
+- return TRUE; |
184 |
+- else |
185 |
+- return g_desktop_app_info_get_show_in (((DesktopEntryDesktop*)entry)->appinfo, current_desktop); |
186 |
+- } |
187 |
++ return g_desktop_app_info_get_show_in (((DesktopEntryDesktop*)entry)->appinfo, NULL); |
188 |
+ return ((DesktopEntryDirectory*)entry)->showin; |
189 |
+ } |
190 |
+ |
191 |
+-- |
192 |
+cgit v0.11.2 |
193 |
+ |
194 |
|
195 |
diff --git a/gnome-base/gnome-menus/files/gnome-menus-3.13.3-multiple-desktop2.patch b/gnome-base/gnome-menus/files/gnome-menus-3.13.3-multiple-desktop2.patch |
196 |
new file mode 100644 |
197 |
index 0000000..966b060 |
198 |
--- /dev/null |
199 |
+++ b/gnome-base/gnome-menus/files/gnome-menus-3.13.3-multiple-desktop2.patch |
200 |
@@ -0,0 +1,27 @@ |
201 |
+From 4befe76fbdb76aa6a986297ef71d1601b2ced42e Mon Sep 17 00:00:00 2001 |
202 |
+From: Josselin Mouette <joss@××××××.org> |
203 |
+Date: Sun, 14 Dec 2014 20:36:36 +0100 |
204 |
+Subject: desktop-entries: fix trivial bug in handling of multiple desktops in |
205 |
+ XDG_CURRENT_DESKTOP. |
206 |
+ |
207 |
+https://bugzilla.gnome.org/show_bug.cgi?id=741505 |
208 |
+--- |
209 |
+ libmenu/desktop-entries.c | 2 +- |
210 |
+ 1 file changed, 1 insertion(+), 1 deletion(-) |
211 |
+ |
212 |
+diff --git a/libmenu/desktop-entries.c b/libmenu/desktop-entries.c |
213 |
+index bd4f886..a463d79 100644 |
214 |
+--- a/libmenu/desktop-entries.c |
215 |
++++ b/libmenu/desktop-entries.c |
216 |
+@@ -97,7 +97,7 @@ get_current_desktops (void) |
217 |
+ |
218 |
+ desktops = g_getenv ("XDG_CURRENT_DESKTOP"); |
219 |
+ |
220 |
+- if (desktops) |
221 |
++ if (!desktops) |
222 |
+ desktops = ""; |
223 |
+ |
224 |
+ tmp = g_strsplit (desktops, ":", 0); |
225 |
+-- |
226 |
+cgit v0.11.2 |
227 |
+ |
228 |
|
229 |
diff --git a/gnome-base/gnome-menus/gnome-menus-3.13.3-r1.ebuild b/gnome-base/gnome-menus/gnome-menus-3.13.3-r1.ebuild |
230 |
new file mode 100644 |
231 |
index 0000000..9b90894 |
232 |
--- /dev/null |
233 |
+++ b/gnome-base/gnome-menus/gnome-menus-3.13.3-r1.ebuild |
234 |
@@ -0,0 +1,53 @@ |
235 |
+# Copyright 1999-2015 Gentoo Foundation |
236 |
+# Distributed under the terms of the GNU General Public License v2 |
237 |
+# $Id$ |
238 |
+ |
239 |
+EAPI="5" |
240 |
+GCONF_DEBUG="yes" |
241 |
+ |
242 |
+inherit eutils gnome2 |
243 |
+ |
244 |
+DESCRIPTION="Library for the Desktop Menu fd.o specification" |
245 |
+HOMEPAGE="https://git.gnome.org/browse/gnome-menus" |
246 |
+ |
247 |
+LICENSE="GPL-2+ LGPL-2+" |
248 |
+SLOT="3" |
249 |
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~x86-solaris" |
250 |
+ |
251 |
+IUSE="+introspection test" |
252 |
+ |
253 |
+COMMON_DEPEND=" |
254 |
+ >=dev-libs/glib-2.29.15:2 |
255 |
+ introspection? ( >=dev-libs/gobject-introspection-0.9.5:= ) |
256 |
+" |
257 |
+# Older versions of slot 0 install the menu editor and the desktop directories |
258 |
+RDEPEND="${COMMON_DEPEND} |
259 |
+ !<gnome-base/gnome-menus-3.0.1-r1:0 |
260 |
+" |
261 |
+DEPEND="${COMMON_DEPEND} |
262 |
+ >=dev-util/intltool-0.40 |
263 |
+ sys-devel/gettext |
264 |
+ virtual/pkgconfig |
265 |
+ test? ( dev-libs/gjs ) |
266 |
+" |
267 |
+ |
268 |
+src_prepare() { |
269 |
+ # Don't show KDE standalone settings desktop files in GNOME others menu |
270 |
+ epatch "${FILESDIR}/${PN}-3.8.0-ignore_kde_standalone.patch" |
271 |
+ |
272 |
+ # desktop-entries: support multiple desktops in XDG_CURRENT_DESKTOP |
273 |
+ # (from 'master') |
274 |
+ epatch "${FILESDIR}"/${P}-multiple-desktop{,2}.patch |
275 |
+ |
276 |
+ gnome2_src_prepare |
277 |
+} |
278 |
+ |
279 |
+src_configure() { |
280 |
+ DOCS="AUTHORS ChangeLog HACKING NEWS README" |
281 |
+ |
282 |
+ # Do NOT compile with --disable-debug/--enable-debug=no |
283 |
+ # It disables api usage checks |
284 |
+ gnome2_src_configure \ |
285 |
+ $(use_enable introspection) \ |
286 |
+ --disable-static |
287 |
+} |