Index: gtk/gtkfilechooserdefault.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkfilechooserdefault.c,v
retrieving revision 1.171.2.15
diff -u -r1.171.2.15 gtkfilechooserdefault.c
--- gtk/gtkfilechooserdefault.c	25 Aug 2004 16:01:03 -0000	1.171.2.15
+++ gtk/gtkfilechooserdefault.c	14 Sep 2004 18:42:36 -0000
@@ -4824,15 +4828,31 @@
       GtkTreeIter iter;
 
       if (shortcuts_get_selected (impl, &iter))
-	shortcuts_activate_iter (impl, &iter);
+	{
+	  shortcuts_activate_iter (impl, &iter);
+	  
+	  gtk_widget_grab_focus (impl->browse_files_tree_view);
+	}
       else
 	goto file_list;
 
       return FALSE;
     }
+  else if (impl->toplevel_last_focus_widget == impl->browse_files_tree_view)
+    {
+      /* The focus is on a dialog's action area button, *and* the widget that
+       * was focused immediately before it is the file list.  
+       */
+      goto file_list;
+    }
   else
-    goto file_list; /* The focus is on a dialog's action area button or something else */
-
+    /* The focus is on a dialog's action area button or something else */
+    if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+	|| impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+      goto save_entry;
+    else
+      goto file_list; 
+  
   g_assert_not_reached ();
   return FALSE;
 }
@@ -5068,6 +5089,8 @@
 						    &child_iter,
 						    &iter);
   shortcuts_activate_iter (impl, &child_iter);
+
+  gtk_widget_grab_focus (impl->browse_files_tree_view);
 }
 
 /* Handler for GtkWidget::key-press-event on the shortcuts list */
