appinfo: Do not override system default handler with less specific one
authorVincent Untz <vuntz@gnome.org>
Sun, 20 Feb 2011 09:41:17 +0000 (10:41 +0100)
committerVincent Untz <vuntz@gnome.org>
Sun, 20 Feb 2011 15:06:40 +0000 (16:06 +0100)
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

index 61ef54c..227bacc 100644 (file)
@@ -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 */