mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-09 20:35:49 +01:00
Bug 545157 – wrong/no list of "open with" applications for .cc and .cpp
2008-07-28 Matthias Clasen <mclasen@redhat.com> Bug 545157 – wrong/no list of "open with" applications for .cc and .cpp files * gdesktopappinfo.c (get_all_desktop_entries_for_mime_type): Collect all ancestors, not just direct parents. Pointed out by Bastien Nocera svn path=/trunk/; revision=7268
This commit is contained in:
parent
c6cadb576b
commit
b51d77011c
@ -1,3 +1,12 @@
|
|||||||
|
2008-07-28 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
Bug 545157 – wrong/no list of "open with" applications for .cc and
|
||||||
|
.cpp files
|
||||||
|
|
||||||
|
* gdesktopappinfo.c (get_all_desktop_entries_for_mime_type):
|
||||||
|
Collect all ancestors, not just direct parents. Pointed
|
||||||
|
out by Bastien Nocera
|
||||||
|
|
||||||
2008-07-28 Matthias Clasen <mclasen@redhat.com>
|
2008-07-28 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* Makefile.am: Install gemblemedicon.h
|
* Makefile.am: Install gemblemedicon.h
|
||||||
|
@ -2433,11 +2433,39 @@ 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;
|
||||||
int i,j;
|
int i, j, k;
|
||||||
|
GPtrArray *array;
|
||||||
|
char **anc;
|
||||||
|
|
||||||
mime_info_cache_init ();
|
mime_info_cache_init ();
|
||||||
|
|
||||||
|
/* collect all ancestors */
|
||||||
mime_types = _g_unix_content_type_get_parents (base_mime_type);
|
mime_types = _g_unix_content_type_get_parents (base_mime_type);
|
||||||
|
array = g_ptr_array_new ();
|
||||||
|
for (i = 0; mime_types[i]; i++)
|
||||||
|
{
|
||||||
|
g_print ("%s\n", mime_types[i]);
|
||||||
|
g_ptr_array_add (array, mime_types[i]);
|
||||||
|
}
|
||||||
|
g_free (mime_types);
|
||||||
|
for (i = 0; i < array->len; i++)
|
||||||
|
{
|
||||||
|
anc = _g_unix_content_type_get_parents (g_ptr_array_index (array, i));
|
||||||
|
for (j = 0; anc[j]; j++)
|
||||||
|
{
|
||||||
|
for (k = 0; k < array->len; k++)
|
||||||
|
{
|
||||||
|
if (strcmp (anc[j], g_ptr_array_index (array, k)) == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (k == array->len) /* not found */
|
||||||
|
g_ptr_array_add (array, g_strdup (anc[j]));
|
||||||
|
}
|
||||||
|
g_strfreev (anc);
|
||||||
|
}
|
||||||
|
g_ptr_array_add (array, NULL);
|
||||||
|
mime_types = g_ptr_array_free (array, FALSE);
|
||||||
|
|
||||||
G_LOCK (mime_info_cache);
|
G_LOCK (mime_info_cache);
|
||||||
|
|
||||||
removed_entries = NULL;
|
removed_entries = NULL;
|
||||||
@ -2458,7 +2486,7 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type)
|
|||||||
for (j = 0; default_entries != NULL && default_entries[j] != NULL; j++)
|
for (j = 0; default_entries != NULL && default_entries[j] != NULL; 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);
|
||||||
|
|
||||||
/* Then removed assiciations from mimeapps.list */
|
/* Then removed associations from mimeapps.list */
|
||||||
removed_associations = g_hash_table_lookup (dir->mimeapps_list_removed_map, mime_type);
|
removed_associations = g_hash_table_lookup (dir->mimeapps_list_removed_map, mime_type);
|
||||||
for (j = 0; removed_associations != NULL && removed_associations[j] != NULL; j++)
|
for (j = 0; removed_associations != NULL && removed_associations[j] != NULL; j++)
|
||||||
removed_entries = append_desktop_entry (removed_entries, removed_associations[j], NULL);
|
removed_entries = append_desktop_entry (removed_entries, removed_associations[j], NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user