diff -ru /gtk+-old/gtk+-2.10.14/gtk/gtkfilechooserdefault.c /gtk+-new/gtk+-2.10.14/gtk/gtkfilechooserdefault.c
--- /gtk+-old/gtk+-2.10.14/gtk/gtkfilechooserdefault.c	2007-07-16 21:44:17.000000000 +0200
+++ /gtk+-new/gtk+-2.10.14/gtk/gtkfilechooserdefault.c	2008-01-10 22:04:57.000000000 +0100
@@ -8267,8 +8267,10 @@
 			    GtkTreeViewColumn     *column,
 			    GtkFileChooserDefault *impl)
 {
+  const char *entry_text;
   GtkTreeIter iter;
   GtkTreeIter child_iter;
+  gboolean do_focus;
 
   if (!gtk_tree_model_get_iter (impl->shortcuts_filter_model, &iter, path))
     return;
@@ -8278,7 +8280,34 @@
 						    &iter);
   shortcuts_activate_iter (impl, &child_iter);
 
-  gtk_widget_grab_focus (impl->browse_files_tree_view);
+  if ((impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+       impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+      && !gtk_expander_get_expanded (GTK_EXPANDER (impl->save_expander)))
+    do_focus = FALSE;
+  /* This fixes one bug that caused #419737
+   * Only refocus if the user actually was browsing the tree.
+   * Otherwise files in the tree may get selected.
+   */
+  else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+	    || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
+	    || ((impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
+	         || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+	        && impl->location_mode == LOCATION_MODE_FILENAME_ENTRY))
+    {
+      g_assert (impl->location_entry != NULL);
+
+      entry_text = gtk_entry_get_text (GTK_ENTRY (impl->location_entry));
+
+      if (impl->browse_files_last_selected_name)
+        do_focus = (compare_utf8_filenames (impl->browse_files_last_selected_name, entry_text) == 0);
+      else
+        do_focus = FALSE;
+    }
+  else
+    do_focus = TRUE;
+
+  if (do_focus)
+    gtk_widget_grab_focus (impl->browse_files_tree_view);
 }
 
 /* Handler for GtkWidget::key-press-event on the shortcuts list */
