]> Pileus Git - ~andy/gtk/commitdiff
Filechooser - In OPEN or SAVE mode, typing a plain folder name should switch to it
authorFederico Mena Quintero <federico@novell.com>
Wed, 6 Oct 2010 17:59:44 +0000 (12:59 -0500)
committerFederico Mena Quintero <federico@novell.com>
Wed, 6 Oct 2010 18:10:16 +0000 (13:10 -0500)
If you type 'subfolder/' and hit Enter, the file chooser will switch you to
it.  But if you type just 'subfolder' without the trailing slash, apps would
receive *that* filename (e.g. file:///foo/bar/subfolder) as the response, and
they would likely print an error that they can't open that file (as it is
a folder).  So, we change the file chooser's current folder to that subfolder
in this case.

Signed-off-by: Federico Mena Quintero <federico@novell.com>
gtk/gtkfilechooserdefault.c

index c0aad3e7f72d97025df6dfff59c5845062e47d51..5fddcfa06ca2865eac7a6d510e8a2f2b3e9cae81 100644 (file)
@@ -8249,8 +8249,13 @@ file_exists_get_info_cb (GCancellable *cancellable,
 
   if (data->impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
     {
-      /* user typed a filename; we are done */
-      g_signal_emit_by_name (data->impl, "response-requested");
+      if (is_folder)
+       change_folder_and_display_error (data->impl, data->file, TRUE);
+      else
+       {
+         /* user typed a filename; we are done */
+         g_signal_emit_by_name (data->impl, "response-requested");
+       }
     }
   else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
     {
@@ -8286,7 +8291,10 @@ file_exists_get_info_cb (GCancellable *cancellable,
     }
   else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
     {
-      needs_file_type_check = TRUE;
+      if (is_folder)
+       change_folder_and_display_error (data->impl, data->file, TRUE);
+      else
+       needs_file_type_check = TRUE;
     }
   else
     {