diff options
author | Christian Neumair <chris@gnome-de.org> | 2005-10-19 18:27:44 +0000 |
---|---|---|
committer | Christian Neumair <cneumair@src.gnome.org> | 2005-10-19 18:27:44 +0000 |
commit | fa3ac0f4c54635a1b3cb83e46819c302d849d933 (patch) | |
tree | b56e18a871a3c4928a1017172f85816c99bb45b9 | |
parent | 01927e480d4827332f4651462310c169b77c2cd1 (diff) | |
download | nautilus-fa3ac0f4c54635a1b3cb83e46819c302d849d933.tar.gz |
Fixes bug #310038.
2005-10-19 Christian Neumair <chris@gnome-de.org>
* libnautilus-private/nautilus-mime-actions.c:
(get_open_with_mime_applications), (application_compare_by_name),
(application_compare_by_id):
Fixes bug #310038.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | libnautilus-private/nautilus-mime-actions.c | 21 |
2 files changed, 23 insertions, 5 deletions
@@ -1,5 +1,12 @@ 2005-10-19 Christian Neumair <chris@gnome-de.org> + * libnautilus-private/nautilus-mime-actions.c: + (get_open_with_mime_applications), (application_compare_by_name), + (application_compare_by_id): + Fixes bug #310038. + +2005-10-19 Christian Neumair <chris@gnome-de.org> + * libnautilus-private/nautilus-bookmark.c: (bookmark_file_changed_callback): Don't update bookmarks when its target file is trashed. Fixes #162787. diff --git a/libnautilus-private/nautilus-mime-actions.c b/libnautilus-private/nautilus-mime-actions.c index 310545e32..2672a410a 100644 --- a/libnautilus-private/nautilus-mime-actions.c +++ b/libnautilus-private/nautilus-mime-actions.c @@ -125,9 +125,17 @@ nautilus_mime_get_default_application_for_file (NautilusFile *file) } static int -application_equal (GnomeVFSMimeApplication *app_a, GnomeVFSMimeApplication *app_b) +application_compare_by_name (const GnomeVFSMimeApplication *app_a, + const GnomeVFSMimeApplication *app_b) { - return gnome_vfs_mime_application_equal (app_a, app_b) ? 0 : 1; + return g_utf8_collate (app_a->name, app_b->name); +} + +static int +application_compare_by_id (const GnomeVFSMimeApplication *app_a, + const GnomeVFSMimeApplication *app_b) +{ + return strcmp (app_a->id, app_b->id); } static GList * @@ -142,6 +150,7 @@ get_open_with_mime_applications (NautilusFile *file) uri = nautilus_file_get_uri (file); result = gnome_vfs_mime_get_all_applications_for_uri (uri, mime_type); + g_list_sort (result, (GCompareFunc) application_compare_by_name); if (strcmp (guessed_mime_type, mime_type) != 0) { GList *result_2; @@ -150,8 +159,9 @@ get_open_with_mime_applications (NautilusFile *file) result_2 = gnome_vfs_mime_get_all_applications (guessed_mime_type); for (l = result_2; l != NULL; l = l->next) { if (!g_list_find_custom (result, l->data, - (GCompareFunc) application_equal)) { - result = g_list_prepend (result, l->data); + (GCompareFunc) application_compare_by_id)) { + result = g_list_insert_sorted (result, l->data, + (GCompareFunc) application_compare_by_name); } } g_list_free (result_2); @@ -161,7 +171,7 @@ get_open_with_mime_applications (NautilusFile *file) g_free (uri); g_free (guessed_mime_type); - return g_list_reverse (result); + return result; } /* Get a list of applications for the Open With menu. This is @@ -193,6 +203,7 @@ nautilus_mime_get_applications_for_file (NautilusFile *file) } mime_type = nautilus_file_get_mime_type (file); result = gnome_vfs_mime_get_all_applications (mime_type); + g_list_sort (result, (GCompareFunc) application_compare_by_name); return filter_nautilus_handler (result); } |