From b05751dfe6d52f33e3431439289b030ea73c591b Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Wed, 20 Feb 2008 15:11:17 +0000 Subject: [PATCH] Finish work on open with tab with multiple files selected. (#343930). 2008-02-20 Cosimo Cecchi * libnautilus-private/nautilus-mime-application-chooser.c: (get_extension_from_file), (set_uri_and_type_for_multiple_files): Finish work on open with tab with multiple files selected. (#343930). svn path=/trunk/; revision=13784 --- ChangeLog | 6 ++ .../nautilus-mime-application-chooser.c | 58 +++++++++++++------ 2 files changed, 47 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 96a95a614..d3c839003 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-02-20 Cosimo Cecchi + + * libnautilus-private/nautilus-mime-application-chooser.c: + (get_extension_from_file), (set_uri_and_type_for_multiple_files): + Finish work on open with tab with multiple files selected. (#343930). + 2008-02-20 Alexander Larsson * libnautilus-private/nautilus-mime-application-chooser.[ch]: diff --git a/libnautilus-private/nautilus-mime-application-chooser.c b/libnautilus-private/nautilus-mime-application-chooser.c index 84561bd71..59beec5e1 100644 --- a/libnautilus-private/nautilus-mime-application-chooser.c +++ b/libnautilus-private/nautilus-mime-application-chooser.c @@ -30,8 +30,10 @@ #include "nautilus-open-with-dialog.h" #include "nautilus-signaller.h" +#include "nautilus-file.h" #include #include +#include #include #include @@ -657,37 +659,59 @@ set_uri_and_type (NautilusMimeApplicationChooser *chooser, return TRUE; } +static char * +get_extension_from_file (NautilusFile *nfile) +{ + char *name; + char *extension; + + name = nautilus_file_get_name (nfile); + extension = get_extension (name); + + g_free (name); + + return extension; +} + static gboolean set_uri_and_type_for_multiple_files (NautilusMimeApplicationChooser *chooser, GList *uris, const char *mime_type) { char *label; - char *extension; - char *name; - GFile *file; + char *first_extension; + gboolean same_extension; GList *iter; chooser->details->for_multiple_files = TRUE; chooser->details->uri = NULL; chooser->details->orig_mime_type = g_strdup (mime_type); - extension = NULL; - iter = uris; - - while (extension == NULL && iter != NULL) { - g_free (extension); - - file = g_file_new_for_uri ((const char *) uris->data); - name = g_file_get_basename (file); - extension = get_extension (name); + same_extension = TRUE; + first_extension = get_extension_from_file (NAUTILUS_FILE (uris->data)); + iter = uris->next; + + while (iter != NULL) { + char *extension_current; + + extension_current = get_extension_from_file (NAUTILUS_FILE (iter->data)); + if (eel_strcmp (first_extension, extension_current)) { + same_extension = FALSE; + g_free (extension_current); + break; + } iter = iter->next; - g_free (name); - g_object_unref (file); + g_free (extension_current); } - set_extension_and_description (NAUTILUS_MIME_APPLICATION_CHOOSER (chooser), - extension, mime_type); - g_free (extension); + if (!same_extension) { + set_extension_and_description (NAUTILUS_MIME_APPLICATION_CHOOSER (chooser), + NULL, mime_type); + } else { + set_extension_and_description (NAUTILUS_MIME_APPLICATION_CHOOSER (chooser), + first_extension, mime_type); + } + + g_free (first_extension); label = g_strdup_printf (_("Open all files of type \"%s\" with:"), chooser->details->type_description); -- GitLab