From 564b5157b51c99c201597b06fe6c9f02e62b94eb Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Wed, 4 Apr 2012 10:46:05 +0200 Subject: Revert blacklist changes make apps relying on old behavior work again The new policy is: if a file in the blacklist folder is a symbolic link, use its target. If its filename ends on .desktop, use the file's basename (so that copying files works). Otherwise, use the contents of file (first line should contain path to a desktop file). --- src/messages-service.c | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/messages-service.c b/src/messages-service.c index c975df1..26eaf78 100644 --- a/src/messages-service.c +++ b/src/messages-service.c @@ -321,14 +321,53 @@ desktop_file_from_keyfile (const gchar * definition_file) return desktopfile; } +/* Check if path is a symlink and return its target if it is */ +static gchar * +get_symlink_target (const gchar *path) +{ + GFile *file; + GFileInfo *fileinfo; + gchar *target = NULL; + + file = g_file_new_for_path (path); + + fileinfo = g_file_query_info (file, "standard::is-symlink", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, NULL); + g_object_unref (file); + + if (!fileinfo) + return NULL; + + if (g_file_info_get_is_symlink (fileinfo)) + target = g_strdup (g_file_info_get_symlink_target (fileinfo)); + + g_object_unref (fileinfo); + return target; +} + /* Add a definition file into the black list and eclipse any launchers that have the same file. */ static gboolean blacklist_add (gpointer udata) { gchar * definition_file = (gchar *)udata; - - blacklist_add_core(definition_file, definition_file); + gchar * symlink_target = get_symlink_target (definition_file); + gchar * contents = NULL; + + if (symlink_target) + blacklist_add_core (symlink_target, definition_file); + else if (g_str_has_suffix (definition_file, ".desktop")) + blacklist_add_core(definition_file, definition_file); + else if (g_file_get_contents (definition_file, &contents, NULL, NULL)) + { + gchar *trimmed = pango_trim_string (contents); + blacklist_add_core (trimmed, definition_file); + g_free (trimmed); + g_free (contents); + } + else + g_warning ("invalid blacklist entry: %s", definition_file); return FALSE; } -- cgit v1.2.3 From f2aefd61b55b2784cc8a2a24026e64cef84f0e4d Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Wed, 4 Apr 2012 16:48:53 +0200 Subject: messages-service.c: fix leak --- src/messages-service.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/messages-service.c b/src/messages-service.c index 26eaf78..981c286 100644 --- a/src/messages-service.c +++ b/src/messages-service.c @@ -356,9 +356,14 @@ blacklist_add (gpointer udata) gchar * contents = NULL; if (symlink_target) + { blacklist_add_core (symlink_target, definition_file); + g_free (symlink_target); + } else if (g_str_has_suffix (definition_file, ".desktop")) + { blacklist_add_core(definition_file, definition_file); + } else if (g_file_get_contents (definition_file, &contents, NULL, NULL)) { gchar *trimmed = pango_trim_string (contents); -- cgit v1.2.3 From d0eae41a0c2f1d70e00eba6961020657fdaaa2a4 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Wed, 4 Apr 2012 18:57:15 +0200 Subject: Workaround for lp #956147: don't show empty icons in the gtk2 version --- src/messages-service.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/messages-service.c b/src/messages-service.c index c975df1..8f636b5 100644 --- a/src/messages-service.c +++ b/src/messages-service.c @@ -29,6 +29,7 @@ with this program. If not, see . #include #include #include +#include #include #include @@ -620,7 +621,9 @@ server_shortcut_added (AppMenuItem * appitem, DbusmenuMenuitem * mi, gpointer da g_debug("Application Shortcut added: %s", mi != NULL ? dbusmenu_menuitem_property_get(mi, DBUSMENU_MENUITEM_PROP_LABEL) : "none"); DbusmenuMenuitem * shell = DBUSMENU_MENUITEM(data); if (mi != NULL) { +#if GTK_CHECK_VERSION(3, 0, 0) dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_ICON_NAME, ""); +#endif dbusmenu_menuitem_child_append(shell, mi); } resort_menu(shell); -- cgit v1.2.3 From f6c8b38729069405066ed632702990c30eec8c3c Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Thu, 5 Apr 2012 16:37:12 +0200 Subject: messages-service.c: add missing resort_menu This might fix lp:856284, but I couldn't verify because I can't reproduce the bug. --- src/messages-service.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/messages-service.c b/src/messages-service.c index 98e84c7..8e85da2 100644 --- a/src/messages-service.c +++ b/src/messages-service.c @@ -1102,6 +1102,7 @@ indicator_added (IndicateListener * listener, IndicateListenerServer * server, I } else { g_warning("Unable to find server menu item"); dbusmenu_menuitem_child_append(menushell, DBUSMENU_MENUITEM(menuitem)); + resort_menu (root_menuitem); } return; -- cgit v1.2.3 From 618e46358a13eca06d26aa681fd11afedee8cfb5 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 5 Apr 2012 12:06:21 -0500 Subject: 0.5.95 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 4a7d1e0..3c8552c 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ AC_INIT(src/indicator-messages.c) AC_PREREQ(2.53) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(indicator-messages, 0.5.94) +AM_INIT_AUTOMAKE(indicator-messages, 0.5.95) AM_MAINTAINER_MODE -- cgit v1.2.3