[gtk+/bgo593793-filechooser-recent-folders-master: 12/20] Allow resolving absolute paths even if there is no base_folder



commit ae42f286bb1e2f93aaf785b2289808dbd7b25e80
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Jun 29 18:20:53 2011 -0500

    Allow resolving absolute paths even if there is no base_folder
    
    This lets us do proper completion in GtkFileChooserEntry even when no base folder
    has been set.  Completion for relative paths won't work, as usual, as expected.

 gtk/gtkfilechooserentry.c |    1 -
 gtk/gtkfilesystem.c       |   17 +++++++++++++++--
 2 files changed, 15 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkfilechooserentry.c b/gtk/gtkfilechooserentry.c
index 55303ed..6ac0b4b 100644
--- a/gtk/gtkfilechooserentry.c
+++ b/gtk/gtkfilechooserentry.c
@@ -1563,7 +1563,6 @@ refresh_current_folder_and_file_part (GtkFileChooserEntry *chooser_entry,
 
   error = NULL;
   if (!chooser_entry->file_system ||
-      !chooser_entry->base_folder ||
       !_gtk_file_system_parse (chooser_entry->file_system,
 			       chooser_entry->base_folder, text,
 			       &folder_file, &file_part, &error))
diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c
index 30ff484..f3d8e82 100644
--- a/gtk/gtkfilesystem.c
+++ b/gtk/gtkfilesystem.c
@@ -708,9 +708,22 @@ _gtk_file_system_parse (GtkFileSystem     *file_system,
   if (str[0] == '~' || g_path_is_absolute (str) || is_uri)
     file = g_file_parse_name (str);
   else
-    file = g_file_resolve_relative_path (base_file, str);
+    {
+      if (base_file)
+	file = g_file_resolve_relative_path (base_file, str);
+      else
+	{
+	  *folder = NULL;
+	  *file_part = NULL;
+	  g_set_error (error,
+		       GTK_FILE_CHOOSER_ERROR,
+		       GTK_FILE_CHOOSER_ERROR_BAD_FILENAME,
+		       _("Invalid path"));
+	  return FALSE;
+	}
+    }
 
-  if (g_file_equal (base_file, file))
+  if (base_file && g_file_equal (base_file, file))
     {
       /* this is when user types '.', could be the
        * beginning of a hidden file, ./ or ../



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]