Index: gtk+-2.10.7/gtk/gtkfilechooserdefault.c
===================================================================
--- gtk+-2.10.7.orig/gtk/gtkfilechooserdefault.c	2007-02-17 23:40:07.000000000 +0100
+++ gtk+-2.10.7/gtk/gtkfilechooserdefault.c	2007-02-18 01:50:57.000000000 +0100
@@ -3224,8 +3224,22 @@
 shortcuts_selection_changed_cb (GtkTreeSelection      *selection,
 				GtkFileChooserDefault *impl)
 {
+  GtkTreeIter iter;
+  GtkTreeIter child_iter;
+
   bookmarks_check_remove_sensitivity (impl);
   shortcuts_check_popup_sensitivity (impl);
+
+  if (impl->changing_folder)
+    return;
+
+  if (gtk_tree_selection_get_selected(selection, NULL, &iter))
+    {
+      gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (impl->shortcuts_filter_model),
+							&child_iter,
+							&iter);
+      shortcuts_activate_iter (impl, &child_iter);
+    }
 }
 
 static gboolean
@@ -7836,10 +7850,13 @@
       /* The focus is on a dialog's action area button, *and* the widget that
        * was focused immediately before it is the shortcuts list.  Switch to the
        * selected shortcut and tell the caller not to respond.
+       * Exception: in the specific SELECT_FOLDER case, we want to return the
+       * currently selected shortcut.
        */
       GtkTreeIter iter;
 
-      if (shortcuts_get_selected (impl, &iter))
+      if (impl->action != GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+          && shortcuts_get_selected (impl, &iter))
 	{
 	  shortcuts_activate_iter (impl, &iter);
 	  
@@ -8178,17 +8195,6 @@
 			    GtkTreeViewColumn     *column,
 			    GtkFileChooserDefault *impl)
 {
-  GtkTreeIter iter;
-  GtkTreeIter child_iter;
-
-  if (!gtk_tree_model_get_iter (impl->shortcuts_filter_model, &iter, path))
-    return;
-
-  gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (impl->shortcuts_filter_model),
-						    &child_iter,
-						    &iter);
-  shortcuts_activate_iter (impl, &child_iter);
-
   gtk_widget_grab_focus (impl->browse_files_tree_view);
 }
 
