Index: gtkfilechooserdefault.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkfilechooserdefault.c,v
retrieving revision 1.329.2.7
diff -u -p -r1.329.2.7 gtkfilechooserdefault.c
--- gtkfilechooserdefault.c	22 Sep 2006 16:32:45 -0000	1.329.2.7
+++ gtkfilechooserdefault.c	31 Oct 2006 18:34:48 -0000
@@ -1,3 +1,4 @@
+/* -*- Mode: C; c-file-style: "gnu"; tab-width: 8 -*- */
 /* GTK - The GIMP Toolkit
  * gtkfilechooserdefault.c: Default implementation of GtkFileChooser
  * Copyright (C) 2003, Red Hat, Inc.
@@ -5821,6 +5822,24 @@ struct ShowAndSelectPathsData
 };
 
 static void
+select_paths (GtkFileChooserDefault *impl,
+	      GSList                *paths)
+{
+  GSList *l;
+
+  for (l = paths; l; l = l->next)
+    {
+      const GtkFilePath *path;
+
+      path = l->data;
+      _gtk_file_system_model_path_do (impl->browse_files_model, path,
+				      select_func, impl);
+    }
+
+  browse_files_center_selected_row (impl);
+}
+
+static void
 show_and_select_paths_finished_loading (GtkFileFolder *folder,
 					gpointer user_data)
 {
@@ -5868,16 +5887,7 @@ show_and_select_paths_finished_loading (
   if (have_filtered)
     set_current_filter (data->impl, NULL);
 
-  for (l = data->paths; l; l = l->next)
-    {
-      const GtkFilePath *path;
-
-      path = l->data;
-      _gtk_file_system_model_path_do (data->impl->browse_files_model, path,
-				      select_func, data->impl);
-    }
-
-  browse_files_center_selected_row (data->impl);
+  select_paths (data->impl, data->paths);
 
   g_object_unref (data->impl);
   gtk_file_paths_free (data->paths);
@@ -6493,9 +6503,9 @@ gtk_file_chooser_default_select_path (Gt
       paths.data = (gpointer) path;
       paths.next = NULL;
 
-      result = show_and_select_paths (impl, parent_path, &paths, error);
-      gtk_file_path_free (parent_path);
-      return result;
+      /* the folder is already loaded, just select the file */
+      select_paths (impl, &paths);
+      return TRUE;
     }
 
   pending_select_paths_add (impl, path);
