summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <chris@gnome-de.org>2005-10-19 18:27:44 +0000
committerChristian Neumair <cneumair@src.gnome.org>2005-10-19 18:27:44 +0000
commitfa3ac0f4c54635a1b3cb83e46819c302d849d933 (patch)
treeb56e18a871a3c4928a1017172f85816c99bb45b9
parent01927e480d4827332f4651462310c169b77c2cd1 (diff)
downloadnautilus-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--ChangeLog7
-rw-r--r--libnautilus-private/nautilus-mime-actions.c21
2 files changed, 23 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 8028930d6..210746449 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);
}