From f909469e31caacd9ec26569cc377dcc367e1f571 Mon Sep 17 00:00:00 2001 From: Vincent Untz Date: Sun, 20 Feb 2011 10:41:17 +0100 Subject: [PATCH] appinfo: Do not override system default handler with less specific one We were considering explicitly configured defaults for parent types after we already got results for the specific type we're interested in. This resulted in the explicit default for text/plain to override all system defaults for subtypes of text/plain, for example. The explicit default should not apply to subtypes that have a system default. https://bugzilla.gnome.org/show_bug.cgi?id=642797 --- gio/gdesktopappinfo.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index 61ef54c..227bacc 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -3059,14 +3059,19 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type, { dir = dir_list->data; - /* Pick the explicit default application */ - entry = g_hash_table_lookup (dir->mimeapps_list_defaults_map, mime_type); - - if (entry != NULL) + /* Pick the explicit default application if we got no result earlier + * (ie, for more specific mime types) + */ + if (desktop_entries == NULL) { - /* Save the default entry if it's the first one we encounter */ - if (default_entry == NULL) - default_entry = g_strdup (entry); + entry = g_hash_table_lookup (dir->mimeapps_list_defaults_map, mime_type); + + if (entry != NULL) + { + /* Save the default entry if it's the first one we encounter */ + if (default_entry == NULL) + default_entry = g_strdup (entry); + } } /* Then added associations from mimeapps.list */ -- 2.7.4