Updating branch refs/heads/xfce-4.8 to 379b8b9f350cb362735eb0e2a0e9471a898f2664 (commit) from 71f6f207cfd0194a3f3db83cb5fab694a5036e22 (commit)
commit 379b8b9f350cb362735eb0e2a0e9471a898f2664 Author: John Lindgren <john.lindg...@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 f91553e..eb1d02e 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ - Fix sorting of filenames with large numbers (bug #5356). Patch by Erik Koegel. - 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.2.3 ===== diff --git a/thunar/thunar-launcher.c b/thunar/thunar-launcher.c index f479cf9..9f96b87 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); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits