Hello community, here is the log from the commit of package gnome-menus for openSUSE:Factory checked in at 2016-09-05 21:14:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnome-menus (Old) and /work/SRC/openSUSE:Factory/.gnome-menus.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-menus" Changes: -------- --- /work/SRC/openSUSE:Factory/gnome-menus/gnome-menus.changes 2014-09-30 19:36:20.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.gnome-menus.new/gnome-menus.changes 2016-09-05 21:14:44.000000000 +0200 @@ -1,0 +2,10 @@ +Mon Aug 29 12:40:24 UTC 2016 - fezh...@suse.com + +- Add + 0001-desktop-entries-support-multiple-desktops-in-XDG_CUR.patch, + 0001-desktop-entries-fix-trivial-bug-in-handling-of-multi.patch: + Backport upstream commit b4546ab and 4befe76. Parse + XDG_CURRENT_DESKTOP correctly when it specifies multiple desktops + (bsc#988595, bgo#741505). + +------------------------------------------------------------------- New: ---- 0001-desktop-entries-fix-trivial-bug-in-handling-of-multi.patch 0001-desktop-entries-support-multiple-desktops-in-XDG_CUR.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnome-menus.spec ++++++ --- /var/tmp/diff_new_pack.ibqYwK/_old 2016-09-05 21:14:45.000000000 +0200 +++ /var/tmp/diff_new_pack.ibqYwK/_new 2016-09-05 21:14:45.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package gnome-menus # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -25,6 +25,10 @@ Url: http://www.gnome.org Source: http://download.gnome.org/sources/gnome-menus/3.13/%{name}-%{version}.tar.xz Source99: baselibs.conf +# PATCH-FIX-UPSTREAM 0001-desktop-entries-support-multiple-desktops-in-XDG_CUR.patch bsc#988595 fezh...@suse.com -- Support multiple desktops specified by XDG_CURRENT_DESKTOP +Patch0: 0001-desktop-entries-support-multiple-desktops-in-XDG_CUR.patch +# PATCH-FIX-UPSTREAM 0001-desktop-entries-fix-trivial-bug-in-handling-of-multi.patch bsc#988595 bgo#741505 fezh...@suse.com -- Fix a typo in 0001-desktop-entries-support-multiple-desktops-in-XDG_CUR.patch +Patch1: 0001-desktop-entries-fix-trivial-bug-in-handling-of-multi.patch BuildRequires: fdupes BuildRequires: gobject-introspection-devel BuildRequires: intltool @@ -108,6 +112,8 @@ %prep %setup -q translation-update-upstream +%patch0 -p1 +%patch1 -p1 %build %configure\ ++++++ 0001-desktop-entries-fix-trivial-bug-in-handling-of-multi.patch ++++++ >From 4befe76fbdb76aa6a986297ef71d1601b2ced42e Mon Sep 17 00:00:00 2001 From: Josselin Mouette <j...@debian.org> Date: Sun, 14 Dec 2014 20:36:36 +0100 Subject: [PATCH] desktop-entries: fix trivial bug in handling of multiple desktops in XDG_CURRENT_DESKTOP. https://bugzilla.gnome.org/show_bug.cgi?id=741505 --- libmenu/desktop-entries.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmenu/desktop-entries.c b/libmenu/desktop-entries.c index bd4f886..a463d79 100644 --- a/libmenu/desktop-entries.c +++ b/libmenu/desktop-entries.c @@ -97,7 +97,7 @@ get_current_desktops (void) desktops = g_getenv ("XDG_CURRENT_DESKTOP"); - if (desktops) + if (!desktops) desktops = ""; tmp = g_strsplit (desktops, ":", 0); -- 2.6.6 ++++++ 0001-desktop-entries-support-multiple-desktops-in-XDG_CUR.patch ++++++ >From b4546ab43c2c7ef6fb6cb7e5db83dc3975b56e8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= <alberts.muktupav...@gmail.com> Date: Mon, 27 Oct 2014 18:41:34 +0200 Subject: [PATCH] desktop-entries: support multiple desktops in XDG_CURRENT_DESKTOP This is based on glib commit: 5a5e16e93c4f11e635918ecdb41681f63fd05a39 --- libmenu/desktop-entries.c | 110 ++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 58 deletions(-) diff --git a/libmenu/desktop-entries.c b/libmenu/desktop-entries.c index 326f311..bd4f886 100644 --- a/libmenu/desktop-entries.c +++ b/libmenu/desktop-entries.c @@ -85,32 +85,27 @@ unix_basename_from_path (const char *path) return path; } -static const char * -get_current_desktop (void) +static const gchar * const * +get_current_desktops (void) { - static char *current_desktop = NULL; + static gchar **result; - /* Support XDG_CURRENT_DESKTOP environment variable; this can be used - * to abuse gnome-menus in non-GNOME desktops. */ - if (!current_desktop) + if (g_once_init_enter (&result)) { - const char *desktop; + const gchar *desktops; + gchar **tmp; - desktop = g_getenv ("XDG_CURRENT_DESKTOP"); + desktops = g_getenv ("XDG_CURRENT_DESKTOP"); - /* Note: if XDG_CURRENT_DESKTOP is set but empty, do as if it - * was not set */ - if (!desktop || desktop[0] == '\0') - current_desktop = g_strdup ("GNOME"); - else - current_desktop = g_strdup (desktop); - } + if (desktops) + desktops = ""; - /* Using "*" means skipping desktop-related checks */ - if (g_strcmp0 (current_desktop, "*") == 0) - return NULL; + tmp = g_strsplit (desktops, ":", 0); + + g_once_init_leave (&result, tmp); + } - return current_desktop; + return (const gchar **) result; } static GIcon * @@ -151,52 +146,58 @@ key_file_get_icon (GKeyFile *key_file) static gboolean key_file_get_show_in (GKeyFile *key_file) { - const gchar *current_desktop; - gchar **strv; + const gchar * const *current_desktops; + gchar **only_show_in; + gchar **not_show_in; gboolean show_in = TRUE; - int i; - - current_desktop = get_current_desktop (); - if (!current_desktop) - return TRUE; - - strv = g_key_file_get_string_list (key_file, - DESKTOP_ENTRY_GROUP, - "OnlyShowIn", - NULL, - NULL); - if (strv) + gint i; + + current_desktops = get_current_desktops (); + only_show_in = g_key_file_get_string_list (key_file, + DESKTOP_ENTRY_GROUP, + "OnlyShowIn", + NULL, + NULL); + not_show_in = g_key_file_get_string_list (key_file, + DESKTOP_ENTRY_GROUP, + "NotShowIn", + NULL, + NULL); + + for (i = 0; current_desktops[i]; i++) { - show_in = FALSE; - for (i = 0; strv[i]; i++) + gint j; + + if (only_show_in) { - if (!strcmp (strv[i], current_desktop)) + show_in = FALSE; + for (j = 0; only_show_in[j]; j++) { - show_in = TRUE; - break; + if (g_str_equal (only_show_in[j], current_desktops[i])) + { + show_in = TRUE; + goto out; + } } } - } - else - { - strv = g_key_file_get_string_list (key_file, - DESKTOP_ENTRY_GROUP, - "NotShowIn", - NULL, - NULL); - if (strv) + + if (not_show_in) { show_in = TRUE; - for (i = 0; strv[i]; i++) + for (j = 0; not_show_in[j]; j++) { - if (!strcmp (strv[i], current_desktop)) + if (g_str_equal (not_show_in[j], current_desktops[i])) { show_in = FALSE; + goto out; } } } } - g_strfreev (strv); + +out: + g_strfreev (only_show_in); + g_strfreev (not_show_in); return show_in; } @@ -579,14 +580,7 @@ gboolean desktop_entry_get_show_in (DesktopEntry *entry) { if (entry->type == DESKTOP_ENTRY_DESKTOP) - { - const char *current_desktop = get_current_desktop (); - - if (current_desktop == NULL) - return TRUE; - else - return g_desktop_app_info_get_show_in (((DesktopEntryDesktop*)entry)->appinfo, current_desktop); - } + return g_desktop_app_info_get_show_in (((DesktopEntryDesktop*)entry)->appinfo, NULL); return ((DesktopEntryDirectory*)entry)->showin; } -- 2.6.6