--- gtk+-2.14.6/gtk/gtkfilechooserdefault.c	2008-12-15 19:38:43.000000000 +0100
+++ gtk+-2.14.6-patch/gtk/gtkfilechooserdefault.c	2008-12-22 01:46:04.000000000 +0100
@@ -7457,7 +7457,19 @@
       check_save_entry (impl, &info.file_from_entry, &is_well_formed, &is_empty, &is_file_part_empty, &is_folder);
 
       if (is_empty)
-	goto out;
+        {
+          if ((impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
+                || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+                && impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
+            {
+              GtkTreeSelection *selection;
+
+              selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+              gtk_tree_selection_selected_foreach (selection, get_files_foreach, &info);
+            }
+
+          goto out;
+        }
 
       if (!is_well_formed)
 	return NULL;
@@ -8452,8 +8464,24 @@
       entry = GTK_FILE_CHOOSER_ENTRY (impl->location_entry);
       check_save_entry (impl, &file, &is_well_formed, &is_empty, &is_file_part_empty, &is_folder);
 
-      if (is_empty || !is_well_formed)
-	return FALSE;
+      if (!is_well_formed)
+        {
+	  return FALSE;
+        }
+      
+      if (is_empty)
+        {
+          if ((impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
+                || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+                && impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
+            {
+              goto file_list;
+            }
+          else
+            {
+              return FALSE;
+            }
+        }
 
       g_assert (file != NULL);
 
