mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-26 04:02:09 +01:00
Fix the mimetype default fix
We need to ignore the defaults.list item only when there was a mimetype handler found in a previous mimetype, not if one was found for the same mimetype as the one that is listed in defaults.list (same for the new-style defaults).
This commit is contained in:
parent
f14c0112d0
commit
c35106fcc4
@ -3239,6 +3239,7 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type,
|
|||||||
char **mime_types;
|
char **mime_types;
|
||||||
char **default_entries;
|
char **default_entries;
|
||||||
char **removed_associations;
|
char **removed_associations;
|
||||||
|
gboolean already_found_handler;
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
GPtrArray *array;
|
GPtrArray *array;
|
||||||
char **anc;
|
char **anc;
|
||||||
@ -3290,6 +3291,11 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type,
|
|||||||
{
|
{
|
||||||
mime_type = mime_types[i];
|
mime_type = mime_types[i];
|
||||||
|
|
||||||
|
/* This is true if we already found a handler for a more specific
|
||||||
|
mimetype. If its set we ignore any defaults for the less specific
|
||||||
|
mimetypes. */
|
||||||
|
already_found_handler = (desktop_entries != NULL);
|
||||||
|
|
||||||
/* Go through all apps listed in user and system dirs */
|
/* Go through all apps listed in user and system dirs */
|
||||||
for (dir_list = mime_info_cache->dirs;
|
for (dir_list = mime_info_cache->dirs;
|
||||||
dir_list != NULL;
|
dir_list != NULL;
|
||||||
@ -3300,7 +3306,7 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type,
|
|||||||
/* Pick the explicit default application if we got no result earlier
|
/* Pick the explicit default application if we got no result earlier
|
||||||
* (ie, for more specific mime types)
|
* (ie, for more specific mime types)
|
||||||
*/
|
*/
|
||||||
if (desktop_entries == NULL)
|
if (!already_found_handler)
|
||||||
{
|
{
|
||||||
entry = g_hash_table_lookup (dir->mimeapps_list_defaults_map, mime_type);
|
entry = g_hash_table_lookup (dir->mimeapps_list_defaults_map, mime_type);
|
||||||
|
|
||||||
@ -3326,7 +3332,7 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type,
|
|||||||
default_entries = g_hash_table_lookup (dir->defaults_list_map, mime_type);
|
default_entries = g_hash_table_lookup (dir->defaults_list_map, mime_type);
|
||||||
for (j = 0; default_entries != NULL && default_entries[j] != NULL; j++)
|
for (j = 0; default_entries != NULL && default_entries[j] != NULL; j++)
|
||||||
{
|
{
|
||||||
if (default_entry == NULL && old_default_entry == NULL && desktop_entries == NULL)
|
if (default_entry == NULL && old_default_entry == NULL && !already_found_handler)
|
||||||
old_default_entry = g_strdup (default_entries[j]);
|
old_default_entry = g_strdup (default_entries[j]);
|
||||||
|
|
||||||
desktop_entries = append_desktop_entry (desktop_entries, default_entries[j], removed_entries);
|
desktop_entries = append_desktop_entry (desktop_entries, default_entries[j], removed_entries);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user