[Xfce4-commits] <thunar:master> Fix handling %U when launching multiple files with an app (bug #7456).
Jannis Pohlmann
noreply at xfce.org
Sun Feb 26 19:58:02 CET 2012
Updating branch refs/heads/master
to 16055b933c938886488c06b402e68e7383318a3a (commit)
from d47f4053b1ea47299f5ef501cd98e5d5c7cf2026 (commit)
commit 16055b933c938886488c06b402e68e7383318a3a
Author: John Lindgren <john.lindgren at aol.com>
Date: Sun Feb 26 18:52:24 2012 +0000
Fix handling %U when launching multiple files with an app (bug #7456).
GIO returns a newly allocated GAppInfo every time
g_app_info_get_default_for_type() is called. This means that if we use a
GHashTable and g_direct_hash() to associate GAppInfos with files to be
launched with each of them, we will actually end up with multiple
GAppInfos that are the same, and each of them will only have a single
file associated.
To fix this, we now use a fake hash function that causes GHashTable to
always search the GAppInfo in the collision list.
NEWS | 1 +
thunar/thunar-launcher.c | 17 ++++++++++++++---
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/NEWS b/NEWS
index f840b87..328b18a 100644
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,7 @@
Patch by Eric Koegel.
- Respect ThunarIconFactory::show-thumbnails. Fixes a regression.
- Fix crash when removing an ancestor of the current folder (bug #8168).
+- Fix handling %U when launching multiple files with an app (bug #7456).
1.3.0
=====
diff --git a/thunar/thunar-launcher.c b/thunar/thunar-launcher.c
index 6d31dee..f525f89 100644
--- a/thunar/thunar-launcher.c
+++ b/thunar/thunar-launcher.c
@@ -546,17 +546,28 @@ thunar_launcher_execute_files (ThunarLauncher *launcher,
+static guint
+thunar_launcher_g_app_info_hash (gconstpointer app_info)
+{
+ return 0;
+}
+
+
+
static void
thunar_launcher_open_files (ThunarLauncher *launcher,
GList *files)
{
- GAppInfo *app_info;
GHashTable *applications;
+ GAppInfo *app_info;
GList *file_list;
GList *lp;
- /* allocate a hash table to associate applications to URIs */
- applications = g_hash_table_new_full (g_direct_hash,
+ /* allocate a hash table to associate applications to URIs. since GIO allocates
+ * new GAppInfo objects every time, g_direct_hash does not work. we therefor use
+ * a fake hash function to always hit the collision list of the hash table and
+ * avoid storing multiple equal GAppInfos by means of g_app_info_equal(). */
+ applications = g_hash_table_new_full (thunar_launcher_g_app_info_hash,
(GEqualFunc) g_app_info_equal,
(GDestroyNotify) g_object_unref,
(GDestroyNotify) thunar_g_file_list_free);
More information about the Xfce4-commits
mailing list