[gtk+/merge-places-sidebar: 183/195] Revert "GtkFileChooserDefault: Define children with a GtkBuilder template"



commit 21083978f015833def00ea649a371e9fdb5b87ac
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Apr 11 16:47:38 2013 -0500

    Revert "GtkFileChooserDefault: Define children with a GtkBuilder template"
    
    Having the changes for composite widget templates makes it impossible
    to merge the places-sidebar branch.  So, we will merge that branch,
    and *then* apply the changes for composite templates.
    
    This reverts commit bf909f56157311174d5d9089bdec954e7def8873.

 gtk/Makefile.am              |    1 -
 gtk/gtk.gresource.xml        |    1 -
 gtk/gtkfilechooserdefault.c  | 3827 ++++++++++++++++++++++--------------------
 gtk/gtkfilechooserdefault.ui |  555 ------
 gtk/gtkfilechooserprivate.h  |  154 ++-
 gtk/tests/templates.c        |   10 -
 6 files changed, 2197 insertions(+), 2351 deletions(-)
---
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 99f0e33..4741e2a 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -1104,7 +1104,6 @@ COMPOSITE_TEMPLATES =                     \
        gtkcoloreditor.ui               \
        gtkdialog.ui                    \
        gtkfilechooserbutton.ui         \
-       gtkfilechooserdefault.ui        \
        gtkfilechooserdialog.ui         \
        gtkfontbutton.ui                \
        gtkfontchooserdialog.ui         \
diff --git a/gtk/gtk.gresource.xml b/gtk/gtk.gresource.xml
index b93d837..22b424a 100644
--- a/gtk/gtk.gresource.xml
+++ b/gtk/gtk.gresource.xml
@@ -19,7 +19,6 @@
     <file compressed="true">gtkcoloreditor.ui</file>
     <file compressed="true">gtkdialog.ui</file>
     <file compressed="true">gtkfilechooserbutton.ui</file>
-    <file compressed="true">gtkfilechooserdefault.ui</file>
     <file compressed="true">gtkfilechooserdialog.ui</file>
     <file compressed="true">gtkfontbutton.ui</file>
     <file compressed="true">gtkfontchooserdialog.ui</file>
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c
index 75dcfde..99c4200 100644
--- a/gtk/gtkfilechooserdefault.c
+++ b/gtk/gtkfilechooserdefault.c
@@ -141,164 +141,6 @@ _gtk_file_chooser_profile_log (const char *func, int indent, const char *msg1, c
 
 
 
-struct _GtkFileChooserDefaultPrivate
-{
-  GtkFileChooserAction action;
-
-  GtkFileSystem *file_system;
-
-  /* Save mode widgets */
-  GtkWidget *save_widgets;
-  GtkWidget *save_widgets_table;
-
-  GtkWidget *save_folder_label;
-
-  /* The file browsing widgets */
-  GtkWidget *browse_widgets_box;
-  GtkWidget *browse_widgets_hpaned;
-  GtkWidget *browse_header_box;
-  GtkWidget *browse_shortcuts_swin;
-  GtkWidget *browse_shortcuts_toolbar;
-  GtkWidget *browse_shortcuts_tree_view;
-  GtkWidget *browse_shortcuts_add_button;
-  GtkWidget *browse_shortcuts_remove_button;
-  GtkWidget *browse_shortcuts_popup_menu;
-  GtkWidget *browse_shortcuts_popup_menu_remove_item;
-  GtkWidget *browse_shortcuts_popup_menu_rename_item;
-  GtkWidget *browse_files_tree_view;
-  GtkWidget *browse_files_popup_menu;
-  GtkWidget *browse_files_popup_menu_add_shortcut_item;
-  GtkWidget *browse_files_popup_menu_hidden_files_item;
-  GtkWidget *browse_files_popup_menu_size_column_item;
-  GtkWidget *browse_files_popup_menu_copy_file_location_item;
-  GtkWidget *browse_files_popup_menu_visit_file_item;
-  GtkWidget *browse_new_folder_button;
-  GtkWidget *browse_path_bar_hbox;
-  GtkSizeGroup *browse_path_bar_size_group;
-  GtkWidget *browse_path_bar;
-  GtkWidget *browse_special_mode_icon;
-  GtkWidget *browse_special_mode_label;
-  GtkWidget *browse_select_a_folder_info_bar;
-  GtkWidget *browse_select_a_folder_label;
-  GtkWidget *browse_select_a_folder_icon;
-
-  GtkFileSystemModel *browse_files_model;
-  char *browse_files_last_selected_name;
-
-  /* OPERATION_MODE_SEARCH */
-  GtkWidget *search_hbox;
-  GtkWidget *search_entry;
-  GtkSearchEngine *search_engine;
-  GtkQuery *search_query;
-  GtkFileSystemModel *search_model;
-
-  /* OPERATION_MODE_RECENT */
-  GtkRecentManager *recent_manager;
-  GtkFileSystemModel *recent_model;
-  guint load_recent_id;
-
-  GtkWidget *filter_combo_hbox;
-  GtkWidget *filter_combo;
-  GtkWidget *preview_box;
-  GtkWidget *preview_label;
-  GtkWidget *preview_widget;
-  GtkWidget *extra_align;
-  GtkWidget *extra_widget;
-
-  GtkWidget *location_button;
-  GtkWidget *location_entry_box;
-  GtkWidget *location_label;
-  GtkWidget *location_entry;
-  LocationMode location_mode;
-
-  GtkListStore *shortcuts_model;
-
-  /* Filter for the shortcuts pane.  We filter out the "current folder" row and
-   * the separator that we use for the "Save in folder" combo.
-   */
-  GtkTreeModel *shortcuts_pane_filter_model;
-  
-  /* Handles */
-  GSList *loading_shortcuts;
-  GSList *reload_icon_cancellables;
-  GCancellable *file_list_drag_data_received_cancellable;
-  GCancellable *update_current_folder_cancellable;
-  GCancellable *should_respond_get_info_cancellable;
-  GCancellable *file_exists_get_info_cancellable;
-  GCancellable *update_from_entry_cancellable;
-  GCancellable *shortcuts_activate_iter_cancellable;
-
-  LoadState load_state;
-  ReloadState reload_state;
-  guint load_timeout_id;
-
-  OperationMode operation_mode;
-
-  GSList *pending_select_files;
-
-  GtkFileFilter *current_filter;
-  GSList *filters;
-
-  int num_volumes;
-  int num_shortcuts;
-  int num_bookmarks;
-
-  gulong volumes_changed_id;
-  gulong bookmarks_changed_id;
-
-  GFile *current_volume_file;
-  GFile *current_folder;
-  GFile *preview_file;
-  char *preview_display_name;
-
-  GtkTreeViewColumn *list_name_column;
-  GtkCellRenderer *list_pixbuf_renderer;
-  GtkCellRenderer *list_name_renderer;
-  GtkTreeViewColumn *list_mtime_column;
-  GtkTreeViewColumn *list_size_column;
-
-  GSource *edited_idle;
-  char *edited_new_text;
-
-  gulong settings_signal_id;
-  int icon_size;
-
-  GSource *focus_entry_idle;
-
-  gulong toplevel_set_focus_id;
-  GtkWidget *toplevel_last_focus_widget;
-
-  gint sort_column;
-  GtkSortType sort_order;
-
-#if 0
-  GdkDragContext *shortcuts_drag_context;
-  GSource *shortcuts_drag_outside_idle;
-#endif
-
-  /* Flags */
-
-  guint local_only : 1;
-  guint preview_widget_active : 1;
-  guint use_preview_label : 1;
-  guint select_multiple : 1;
-  guint show_hidden : 1;
-  guint do_overwrite_confirmation : 1;
-  guint list_sort_ascending : 1;
-  guint changing_folder : 1;
-  guint shortcuts_current_folder_active : 1;
-  guint has_home : 1;
-  guint has_desktop : 1;
-  guint has_search : 1;
-  guint has_recent: 1;
-  guint show_size_column : 1;
-  guint create_folders : 1;
-
-#if 0
-  guint shortcuts_drag_outside : 1;
-#endif
-};
-
 typedef struct _GtkFileChooserDefaultClass GtkFileChooserDefaultClass;
 
 #define GTK_FILE_CHOOSER_DEFAULT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), 
GTK_TYPE_FILE_CHOOSER_DEFAULT, GtkFileChooserDefaultClass))
@@ -581,6 +423,7 @@ static void     set_file_system_backend      (GtkFileChooserDefault *impl);
 static void     unset_file_system_backend    (GtkFileChooserDefault *impl);
 
 
+
 
 
 /* Drag and drop interface declarations */
@@ -608,6 +451,10 @@ G_DEFINE_TYPE_WITH_CODE (ShortcutsPaneModelFilter,
                         G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_SOURCE,
                                                shortcuts_pane_model_filter_drag_source_iface_init))
 
+static GtkTreeModel *shortcuts_pane_model_filter_new (GtkFileChooserDefault *impl,
+                                                     GtkTreeModel          *child_model,
+                                                     GtkTreePath           *root);
+
 
 
 G_DEFINE_TYPE_WITH_CODE (GtkFileChooserDefault, _gtk_file_chooser_default, GTK_TYPE_BOX,
@@ -632,134 +479,406 @@ add_normal_and_shifted_binding (GtkBindingSet  *binding_set,
                                signal_name, 0);
 }
 
-/* Frees the data columns for the specified iter in the shortcuts model*/
 static void
-shortcuts_free_row_data (GtkFileChooserDefault *impl,
-                        GtkTreeIter           *iter)
+_gtk_file_chooser_default_class_init (GtkFileChooserDefaultClass *class)
 {
-  gpointer col_data;
-  ShortcutType shortcut_type;
-  GCancellable *cancellable;
-
-  gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), iter,
-                     SHORTCUTS_COL_DATA, &col_data,
-                     SHORTCUTS_COL_TYPE, &shortcut_type,
-                     SHORTCUTS_COL_CANCELLABLE, &cancellable,
-                     -1);
-
-  if (cancellable)
-    {
-      g_cancellable_cancel (cancellable);
-      g_object_unref (cancellable);
-    }
-
-  if (!(shortcut_type == SHORTCUT_TYPE_FILE || 
-       shortcut_type == SHORTCUT_TYPE_VOLUME) ||
-      !col_data)
-    return;
-
-  if (shortcut_type == SHORTCUT_TYPE_VOLUME)
-    {
-      GtkFileSystemVolume *volume;
-
-      volume = col_data;
-      _gtk_file_system_volume_unref (volume);
-    }
-  if (shortcut_type == SHORTCUT_TYPE_FILE)
-    {
-      GFile *file;
+  static const guint quick_bookmark_keyvals[10] = {
+    GDK_KEY_1, GDK_KEY_2, GDK_KEY_3, GDK_KEY_4, GDK_KEY_5, GDK_KEY_6, GDK_KEY_7, GDK_KEY_8, GDK_KEY_9, 
GDK_KEY_0
+  };
+  GObjectClass *gobject_class = G_OBJECT_CLASS (class);
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
+  GtkBindingSet *binding_set;
+  int i;
 
-      file = col_data;
-      g_object_unref (file);
-    }
-}
+  gobject_class->finalize = gtk_file_chooser_default_finalize;
+  gobject_class->constructor = gtk_file_chooser_default_constructor;
+  gobject_class->set_property = gtk_file_chooser_default_set_property;
+  gobject_class->get_property = gtk_file_chooser_default_get_property;
+  gobject_class->dispose = gtk_file_chooser_default_dispose;
 
-/* Frees all the data columns in the shortcuts model */
-static void
-shortcuts_free (GtkFileChooserDefault *impl)
-{
-  GtkTreeIter iter;
+  widget_class->show_all = gtk_file_chooser_default_show_all;
+  widget_class->realize = gtk_file_chooser_default_realize;
+  widget_class->map = gtk_file_chooser_default_map;
+  widget_class->unmap = gtk_file_chooser_default_unmap;
+  widget_class->hierarchy_changed = gtk_file_chooser_default_hierarchy_changed;
+  widget_class->style_updated = gtk_file_chooser_default_style_updated;
+  widget_class->screen_changed = gtk_file_chooser_default_screen_changed;
 
-  if (!impl->priv->shortcuts_model)
-    return;
+  signals[LOCATION_POPUP] =
+    g_signal_new_class_handler (I_("location-popup"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (location_popup_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__STRING,
+                                G_TYPE_NONE, 1, G_TYPE_STRING);
 
-  if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
-    do
-      {
-       shortcuts_free_row_data (impl, &iter);
-      }
-    while (gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter));
+  signals[LOCATION_POPUP_ON_PASTE] =
+    g_signal_new_class_handler (I_("location-popup-on-paste"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (location_popup_on_paste_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-  impl->priv->shortcuts_model = NULL;
-}
+  signals[LOCATION_TOGGLE_POPUP] =
+    g_signal_new_class_handler (I_("location-toggle-popup"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (location_toggle_popup_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-static void
-pending_select_files_free (GtkFileChooserDefault *impl)
-{
-  g_slist_free_full (impl->priv->pending_select_files, g_object_unref);
-  impl->priv->pending_select_files = NULL;
-}
+  signals[UP_FOLDER] =
+    g_signal_new_class_handler (I_("up-folder"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (up_folder_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-static void
-pending_select_files_add (GtkFileChooserDefault *impl,
-                         GFile                 *file)
-{
-  impl->priv->pending_select_files =
-    g_slist_prepend (impl->priv->pending_select_files, g_object_ref (file));
-}
+  signals[DOWN_FOLDER] =
+    g_signal_new_class_handler (I_("down-folder"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (down_folder_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-static void
-gtk_file_chooser_default_finalize (GObject *object)
-{
-  GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (object);
-  GSList *l;
+  signals[HOME_FOLDER] =
+    g_signal_new_class_handler (I_("home-folder"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (home_folder_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-  unset_file_system_backend (impl);
+  signals[DESKTOP_FOLDER] =
+    g_signal_new_class_handler (I_("desktop-folder"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (desktop_folder_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-  g_free (impl->priv->browse_files_last_selected_name);
+  signals[QUICK_BOOKMARK] =
+    g_signal_new_class_handler (I_("quick-bookmark"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (quick_bookmark_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__INT,
+                                G_TYPE_NONE, 1, G_TYPE_INT);
 
-  for (l = impl->priv->filters; l; l = l->next)
-    {
-      GtkFileFilter *filter;
+  signals[SHOW_HIDDEN] =
+    g_signal_new_class_handler (I_("show-hidden"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (show_hidden_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-      filter = GTK_FILE_FILTER (l->data);
-      g_object_unref (filter);
-    }
-  g_slist_free (impl->priv->filters);
+  signals[SEARCH_SHORTCUT] =
+    g_signal_new_class_handler (I_("search-shortcut"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (search_shortcut_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-  if (impl->priv->current_filter)
-    g_object_unref (impl->priv->current_filter);
+  signals[RECENT_SHORTCUT] =
+    g_signal_new_class_handler (I_("recent-shortcut"),
+                                G_OBJECT_CLASS_TYPE (class),
+                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                G_CALLBACK (recent_shortcut_handler),
+                                NULL, NULL,
+                                _gtk_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
 
-  if (impl->priv->current_volume_file)
-    g_object_unref (impl->priv->current_volume_file);
+  binding_set = gtk_binding_set_by_class (class);
 
-  if (impl->priv->current_folder)
-    g_object_unref (impl->priv->current_folder);
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_l, GDK_CONTROL_MASK,
+                               "location-toggle-popup",
+                               0);
 
-  if (impl->priv->preview_file)
-    g_object_unref (impl->priv->preview_file);
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_slash, 0,
+                               "location-popup",
+                               1, G_TYPE_STRING, "/");
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_KP_Divide, 0,
+                               "location-popup",
+                               1, G_TYPE_STRING, "/");
 
-  /* Free all the Models we have */
-  stop_loading_and_clear_list_model (impl, FALSE);
-  search_clear_model (impl, FALSE);
-  recent_clear_model (impl, FALSE);
+#ifdef G_OS_UNIX
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_asciitilde, 0,
+                               "location-popup",
+                               1, G_TYPE_STRING, "~");
+#endif
 
-  /* stopping the load above should have cleared this */
-  g_assert (impl->priv->load_timeout_id == 0);
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_v, GDK_CONTROL_MASK,
+                               "location-popup-on-paste",
+                               0);
 
-  g_free (impl->priv->preview_display_name);
+  add_normal_and_shifted_binding (binding_set,
+                                 GDK_KEY_Up, GDK_MOD1_MASK,
+                                 "up-folder");
 
-  g_free (impl->priv->edited_new_text);
+  add_normal_and_shifted_binding (binding_set,
+                                 GDK_KEY_KP_Up, GDK_MOD1_MASK,
+                                 "up-folder");
 
-  G_OBJECT_CLASS (_gtk_file_chooser_default_parent_class)->finalize (object);
-}
+  add_normal_and_shifted_binding (binding_set,
+                                 GDK_KEY_Down, GDK_MOD1_MASK,
+                                 "down-folder");
+  add_normal_and_shifted_binding (binding_set,
+                                 GDK_KEY_KP_Down, GDK_MOD1_MASK,
+                                 "down-folder");
 
-/* Shows an error dialog set as transient for the specified window */
-static void
-error_message_with_parent (GtkWindow  *parent,
-                          const char *msg,
-                          const char *detail)
-{
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_Home, GDK_MOD1_MASK,
+                               "home-folder",
+                               0);
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_KP_Home, GDK_MOD1_MASK,
+                               "home-folder",
+                               0);
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_d, GDK_MOD1_MASK,
+                               "desktop-folder",
+                               0);
+  gtk_binding_entry_add_signal (binding_set,
+                               GDK_KEY_h, GDK_CONTROL_MASK,
+                                "show-hidden",
+                                0);
+  gtk_binding_entry_add_signal (binding_set,
+                                GDK_KEY_s, GDK_MOD1_MASK,
+                                "search-shortcut",
+                                0);
+  gtk_binding_entry_add_signal (binding_set,
+                                GDK_KEY_r, GDK_MOD1_MASK,
+                                "recent-shortcut",
+                                0);
+
+  for (i = 0; i < 10; i++)
+    gtk_binding_entry_add_signal (binding_set,
+                                 quick_bookmark_keyvals[i], GDK_MOD1_MASK,
+                                 "quick-bookmark",
+                                 1, G_TYPE_INT, i);
+
+  _gtk_file_chooser_install_properties (gobject_class);
+}
+
+static void
+gtk_file_chooser_default_iface_init (GtkFileChooserIface *iface)
+{
+  iface->select_file = gtk_file_chooser_default_select_file;
+  iface->unselect_file = gtk_file_chooser_default_unselect_file;
+  iface->select_all = gtk_file_chooser_default_select_all;
+  iface->unselect_all = gtk_file_chooser_default_unselect_all;
+  iface->get_files = gtk_file_chooser_default_get_files;
+  iface->get_preview_file = gtk_file_chooser_default_get_preview_file;
+  iface->get_file_system = gtk_file_chooser_default_get_file_system;
+  iface->set_current_folder = gtk_file_chooser_default_set_current_folder;
+  iface->get_current_folder = gtk_file_chooser_default_get_current_folder;
+  iface->set_current_name = gtk_file_chooser_default_set_current_name;
+  iface->add_filter = gtk_file_chooser_default_add_filter;
+  iface->remove_filter = gtk_file_chooser_default_remove_filter;
+  iface->list_filters = gtk_file_chooser_default_list_filters;
+  iface->add_shortcut_folder = gtk_file_chooser_default_add_shortcut_folder;
+  iface->remove_shortcut_folder = gtk_file_chooser_default_remove_shortcut_folder;
+  iface->list_shortcut_folders = gtk_file_chooser_default_list_shortcut_folders;
+}
+
+static void
+gtk_file_chooser_embed_default_iface_init (GtkFileChooserEmbedIface *iface)
+{
+  iface->get_default_size = gtk_file_chooser_default_get_default_size;
+  iface->should_respond = gtk_file_chooser_default_should_respond;
+  iface->initial_focus = gtk_file_chooser_default_initial_focus;
+}
+
+static void
+_gtk_file_chooser_default_init (GtkFileChooserDefault *impl)
+{
+  profile_start ("start", NULL);
+#ifdef PROFILE_FILE_CHOOSER
+  access ("MARK: *** CREATE FILE CHOOSER", F_OK);
+#endif
+  impl->local_only = TRUE;
+  impl->preview_widget_active = TRUE;
+  impl->use_preview_label = TRUE;
+  impl->select_multiple = FALSE;
+  impl->show_hidden = FALSE;
+  impl->show_size_column = TRUE;
+  impl->icon_size = FALLBACK_ICON_SIZE;
+  impl->load_state = LOAD_EMPTY;
+  impl->reload_state = RELOAD_EMPTY;
+  impl->pending_select_files = NULL;
+  impl->location_mode = LOCATION_MODE_PATH_BAR;
+  impl->operation_mode = OPERATION_MODE_BROWSE;
+  impl->sort_column = MODEL_COL_NAME;
+  impl->sort_order = GTK_SORT_ASCENDING;
+  impl->recent_manager = gtk_recent_manager_get_default ();
+  impl->create_folders = TRUE;
+
+  gtk_orientable_set_orientation (GTK_ORIENTABLE (impl),
+                                  GTK_ORIENTATION_VERTICAL);
+  gtk_box_set_spacing (GTK_BOX (impl), 12);
+
+  set_file_system_backend (impl);
+
+  profile_end ("end", NULL);
+}
+
+/* Frees the data columns for the specified iter in the shortcuts model*/
+static void
+shortcuts_free_row_data (GtkFileChooserDefault *impl,
+                        GtkTreeIter           *iter)
+{
+  gpointer col_data;
+  ShortcutType shortcut_type;
+  GCancellable *cancellable;
+
+  gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), iter,
+                     SHORTCUTS_COL_DATA, &col_data,
+                     SHORTCUTS_COL_TYPE, &shortcut_type,
+                     SHORTCUTS_COL_CANCELLABLE, &cancellable,
+                     -1);
+
+  if (cancellable)
+    {
+      g_cancellable_cancel (cancellable);
+      g_object_unref (cancellable);
+    }
+
+  if (!(shortcut_type == SHORTCUT_TYPE_FILE || 
+       shortcut_type == SHORTCUT_TYPE_VOLUME) ||
+      !col_data)
+    return;
+
+  if (shortcut_type == SHORTCUT_TYPE_VOLUME)
+    {
+      GtkFileSystemVolume *volume;
+
+      volume = col_data;
+      _gtk_file_system_volume_unref (volume);
+    }
+  if (shortcut_type == SHORTCUT_TYPE_FILE)
+    {
+      GFile *file;
+
+      file = col_data;
+      g_object_unref (file);
+    }
+}
+
+/* Frees all the data columns in the shortcuts model */
+static void
+shortcuts_free (GtkFileChooserDefault *impl)
+{
+  GtkTreeIter iter;
+
+  if (!impl->shortcuts_model)
+    return;
+
+  if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
+    do
+      {
+       shortcuts_free_row_data (impl, &iter);
+      }
+    while (gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model), &iter));
+
+  g_object_unref (impl->shortcuts_model);
+  impl->shortcuts_model = NULL;
+}
+
+static void
+pending_select_files_free (GtkFileChooserDefault *impl)
+{
+  g_slist_free_full (impl->pending_select_files, g_object_unref);
+  impl->pending_select_files = NULL;
+}
+
+static void
+pending_select_files_add (GtkFileChooserDefault *impl,
+                         GFile                 *file)
+{
+  impl->pending_select_files =
+    g_slist_prepend (impl->pending_select_files, g_object_ref (file));
+}
+
+static void
+gtk_file_chooser_default_finalize (GObject *object)
+{
+  GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (object);
+  GSList *l;
+
+  unset_file_system_backend (impl);
+
+  if (impl->shortcuts_pane_filter_model)
+    g_object_unref (impl->shortcuts_pane_filter_model);
+
+  shortcuts_free (impl);
+
+  g_free (impl->browse_files_last_selected_name);
+
+  for (l = impl->filters; l; l = l->next)
+    {
+      GtkFileFilter *filter;
+
+      filter = GTK_FILE_FILTER (l->data);
+      g_object_unref (filter);
+    }
+  g_slist_free (impl->filters);
+
+  if (impl->current_filter)
+    g_object_unref (impl->current_filter);
+
+  if (impl->current_volume_file)
+    g_object_unref (impl->current_volume_file);
+
+  if (impl->current_folder)
+    g_object_unref (impl->current_folder);
+
+  if (impl->preview_file)
+    g_object_unref (impl->preview_file);
+
+  if (impl->browse_path_bar_size_group)
+    g_object_unref (impl->browse_path_bar_size_group);
+
+  /* Free all the Models we have */
+  stop_loading_and_clear_list_model (impl, FALSE);
+  search_clear_model (impl, FALSE);
+  recent_clear_model (impl, FALSE);
+
+  /* stopping the load above should have cleared this */
+  g_assert (impl->load_timeout_id == 0);
+
+  g_free (impl->preview_display_name);
+
+  g_free (impl->edited_new_text);
+
+  G_OBJECT_CLASS (_gtk_file_chooser_default_parent_class)->finalize (object);
+}
+
+/* Shows an error dialog set as transient for the specified window */
+static void
+error_message_with_parent (GtkWindow  *parent,
+                          const char *msg,
+                          const char *detail)
+{
   GtkWidget *dialog;
 
   dialog = gtk_message_dialog_new (parent,
@@ -971,30 +1090,30 @@ emit_default_size_changed (GtkFileChooserDefault *impl)
 static void
 update_preview_widget_visibility (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->use_preview_label)
+  if (impl->use_preview_label)
     {
-      if (!impl->priv->preview_label)
+      if (!impl->preview_label)
        {
-         impl->priv->preview_label = gtk_label_new (impl->priv->preview_display_name);
-         gtk_box_pack_start (GTK_BOX (impl->priv->preview_box), impl->priv->preview_label, FALSE, FALSE, 0);
-         gtk_box_reorder_child (GTK_BOX (impl->priv->preview_box), impl->priv->preview_label, 0);
-         gtk_label_set_ellipsize (GTK_LABEL (impl->priv->preview_label), PANGO_ELLIPSIZE_MIDDLE);
-         gtk_widget_show (impl->priv->preview_label);
+         impl->preview_label = gtk_label_new (impl->preview_display_name);
+         gtk_box_pack_start (GTK_BOX (impl->preview_box), impl->preview_label, FALSE, FALSE, 0);
+         gtk_box_reorder_child (GTK_BOX (impl->preview_box), impl->preview_label, 0);
+         gtk_label_set_ellipsize (GTK_LABEL (impl->preview_label), PANGO_ELLIPSIZE_MIDDLE);
+         gtk_widget_show (impl->preview_label);
        }
     }
   else
     {
-      if (impl->priv->preview_label)
+      if (impl->preview_label)
        {
-         gtk_widget_destroy (impl->priv->preview_label);
-         impl->priv->preview_label = NULL;
+         gtk_widget_destroy (impl->preview_label);
+         impl->preview_label = NULL;
        }
     }
 
-  if (impl->priv->preview_widget_active && impl->priv->preview_widget)
-    gtk_widget_show (impl->priv->preview_box);
+  if (impl->preview_widget_active && impl->preview_widget)
+    gtk_widget_show (impl->preview_box);
   else
-    gtk_widget_hide (impl->priv->preview_box);
+    gtk_widget_hide (impl->preview_box);
 
   if (!gtk_widget_get_mapped (GTK_WIDGET (impl)))
     emit_default_size_changed (impl);
@@ -1004,21 +1123,21 @@ static void
 set_preview_widget (GtkFileChooserDefault *impl,
                    GtkWidget             *preview_widget)
 {
-  if (preview_widget == impl->priv->preview_widget)
+  if (preview_widget == impl->preview_widget)
     return;
 
-  if (impl->priv->preview_widget)
-    gtk_container_remove (GTK_CONTAINER (impl->priv->preview_box),
-                         impl->priv->preview_widget);
+  if (impl->preview_widget)
+    gtk_container_remove (GTK_CONTAINER (impl->preview_box),
+                         impl->preview_widget);
 
-  impl->priv->preview_widget = preview_widget;
-  if (impl->priv->preview_widget)
+  impl->preview_widget = preview_widget;
+  if (impl->preview_widget)
     {
-      gtk_widget_show (impl->priv->preview_widget);
-      gtk_box_pack_start (GTK_BOX (impl->priv->preview_box), impl->priv->preview_widget, TRUE, TRUE, 0);
-      gtk_box_reorder_child (GTK_BOX (impl->priv->preview_box),
-                            impl->priv->preview_widget,
-                            (impl->priv->use_preview_label && impl->priv->preview_label) ? 1 : 0);
+      gtk_widget_show (impl->preview_widget);
+      gtk_box_pack_start (GTK_BOX (impl->preview_box), impl->preview_widget, TRUE, TRUE, 0);
+      gtk_box_reorder_child (GTK_BOX (impl->preview_box),
+                            impl->preview_widget,
+                            (impl->use_preview_label && impl->preview_label) ? 1 : 0);
     }
 
   update_preview_widget_visibility (impl);
@@ -1043,7 +1162,7 @@ render_recent_icon (GtkFileChooserDefault *impl)
     theme = gtk_icon_theme_get_default ();
 
   retval = gtk_icon_theme_load_icon (theme, "document-open-recent",
-                                     impl->priv->icon_size, 0,
+                                     impl->icon_size, 0,
                                      NULL);
 
   /* fallback */
@@ -1073,21 +1192,21 @@ shortcuts_reload_icons_get_info_cb (GCancellable *cancellable,
   gboolean cancelled = g_cancellable_is_cancelled (cancellable);
   struct ReloadIconsData *data = user_data;
 
-  if (!g_slist_find (data->impl->priv->reload_icon_cancellables, cancellable))
+  if (!g_slist_find (data->impl->reload_icon_cancellables, cancellable))
     goto out;
 
-  data->impl->priv->reload_icon_cancellables = g_slist_remove (data->impl->priv->reload_icon_cancellables, 
cancellable);
+  data->impl->reload_icon_cancellables = g_slist_remove (data->impl->reload_icon_cancellables, cancellable);
 
   if (cancelled || error)
     goto out;
 
-  pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (data->impl), data->impl->priv->icon_size);
+  pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (data->impl), data->impl->icon_size);
 
   path = gtk_tree_row_reference_get_path (data->row_ref);
   if (path)
     {
-      gtk_tree_model_get_iter (GTK_TREE_MODEL (data->impl->priv->shortcuts_model), &iter, path);
-      gtk_list_store_set (data->impl->priv->shortcuts_model, &iter,
+      gtk_tree_model_get_iter (GTK_TREE_MODEL (data->impl->shortcuts_model), &iter, path);
+      gtk_list_store_set (data->impl->shortcuts_model, &iter,
                          SHORTCUTS_COL_PIXBUF, pixbuf,
                          -1);
       gtk_tree_path_free (path);
@@ -1112,16 +1231,16 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
 
   profile_start ("start", NULL);
 
-  if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
+  if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
     goto out;
 
-  for (l = impl->priv->reload_icon_cancellables; l; l = l->next)
+  for (l = impl->reload_icon_cancellables; l; l = l->next)
     {
       GCancellable *cancellable = G_CANCELLABLE (l->data);
       g_cancellable_cancel (cancellable);
     }
-  g_slist_free (impl->priv->reload_icon_cancellables);
-  impl->priv->reload_icon_cancellables = NULL;
+  g_slist_free (impl->reload_icon_cancellables);
+  impl->reload_icon_cancellables = NULL;
 
   do
     {
@@ -1130,7 +1249,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
       gboolean pixbuf_visible;
       GdkPixbuf *pixbuf;
 
-      gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+      gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                          SHORTCUTS_COL_DATA, &data,
                          SHORTCUTS_COL_TYPE, &shortcut_type,
                          SHORTCUTS_COL_PIXBUF_VISIBLE, &pixbuf_visible,
@@ -1145,7 +1264,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
 
              volume = data;
              pixbuf = _gtk_file_system_volume_render_icon (volume, GTK_WIDGET (impl),
-                                                           impl->priv->icon_size, NULL);
+                                                           impl->icon_size, NULL);
            }
          else if (shortcut_type == SHORTCUT_TYPE_FILE)
             {
@@ -1160,15 +1279,15 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
 
                  info = g_new0 (struct ReloadIconsData, 1);
                  info->impl = g_object_ref (impl);
-                 tree_path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter);
-                 info->row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (impl->priv->shortcuts_model), 
tree_path);
+                 tree_path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->shortcuts_model), &iter);
+                 info->row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (impl->shortcuts_model), 
tree_path);
                  gtk_tree_path_free (tree_path);
 
-                 cancellable = _gtk_file_system_get_info (impl->priv->file_system, file,
+                 cancellable = _gtk_file_system_get_info (impl->file_system, file,
                                                           "standard::icon",
                                                           shortcuts_reload_icons_get_info_cb,
                                                           info);
-                 impl->priv->reload_icon_cancellables = g_slist_append 
(impl->priv->reload_icon_cancellables, cancellable);
+                 impl->reload_icon_cancellables = g_slist_append (impl->reload_icon_cancellables, 
cancellable);
                }
               else
                {
@@ -1181,7 +1300,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
                   */
                  icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
                  pixbuf = gtk_icon_theme_load_icon (icon_theme, "folder-remote", 
-                                                    impl->priv->icon_size, 0, NULL);
+                                                    impl->icon_size, 0, NULL);
                }
             }
          else if (shortcut_type == SHORTCUT_TYPE_SEARCH)
@@ -1193,7 +1312,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
               pixbuf = render_recent_icon (impl);
             }
 
-          gtk_list_store_set (impl->priv->shortcuts_model, &iter,
+          gtk_list_store_set (impl->shortcuts_model, &iter,
                              SHORTCUTS_COL_PIXBUF, pixbuf,
                              -1);
 
@@ -1202,7 +1321,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
 
        }
     }
-  while (gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model),&iter));
+  while (gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model),&iter));
 
  out:
 
@@ -1217,7 +1336,7 @@ shortcuts_find_folder (GtkFileChooserDefault *impl,
   int pos;
   GtkTreePath *path;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
 
   g_assert (folder != NULL);
   pos = shortcut_find_position (impl, folder);
@@ -1236,7 +1355,7 @@ shortcuts_find_folder (GtkFileChooserDefault *impl,
 static void
 shortcuts_find_current_folder (GtkFileChooserDefault *impl)
 {
-  shortcuts_find_folder (impl, impl->priv->current_folder);
+  shortcuts_find_folder (impl, impl->current_folder);
 }
 
 /* Removes the specified number of rows from the shortcuts list */
@@ -1253,11 +1372,11 @@ shortcuts_remove_rows (GtkFileChooserDefault *impl,
     {
       GtkTreeIter iter;
 
-      if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, path))
+      if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->shortcuts_model), &iter, path))
        g_assert_not_reached ();
 
       shortcuts_free_row_data (impl, &iter);
-      gtk_list_store_remove (impl->priv->shortcuts_model, &iter);
+      gtk_list_store_remove (impl->shortcuts_model, &iter);
     }
 
   gtk_tree_path_free (path);
@@ -1272,35 +1391,35 @@ shortcuts_update_count (GtkFileChooserDefault *impl,
     {
       case SHORTCUTS_HOME:
        if (value < 0)
-         impl->priv->has_home = FALSE;
+         impl->has_home = FALSE;
        else
-         impl->priv->has_home = TRUE;
+         impl->has_home = TRUE;
        break;
 
       case SHORTCUTS_DESKTOP:
        if (value < 0)
-         impl->priv->has_desktop = FALSE;
+         impl->has_desktop = FALSE;
        else
-         impl->priv->has_desktop = TRUE;
+         impl->has_desktop = TRUE;
        break;
 
       case SHORTCUTS_VOLUMES:
-       impl->priv->num_volumes += value;
+       impl->num_volumes += value;
        break;
 
       case SHORTCUTS_SHORTCUTS:
-       impl->priv->num_shortcuts += value;
+       impl->num_shortcuts += value;
        break;
 
       case SHORTCUTS_BOOKMARKS:
-       impl->priv->num_bookmarks += value;
+       impl->num_bookmarks += value;
        break;
 
       case SHORTCUTS_CURRENT_FOLDER:
        if (value < 0)
-         impl->priv->shortcuts_current_folder_active = FALSE;
+         impl->shortcuts_current_folder_active = FALSE;
        else
-         impl->priv->shortcuts_current_folder_active = TRUE;
+         impl->shortcuts_current_folder_active = TRUE;
        break;
 
       default:
@@ -1339,19 +1458,19 @@ get_file_info_finished (GCancellable *cancellable,
     /* Handle doesn't exist anymore in the model */
     goto out;
 
-  gtk_tree_model_get_iter (GTK_TREE_MODEL (request->impl->priv->shortcuts_model),
+  gtk_tree_model_get_iter (GTK_TREE_MODEL (request->impl->shortcuts_model),
                           &iter, path);
   gtk_tree_path_free (path);
 
   /* validate cancellable, else goto out */
-  gtk_tree_model_get (GTK_TREE_MODEL (request->impl->priv->shortcuts_model), &iter,
+  gtk_tree_model_get (GTK_TREE_MODEL (request->impl->shortcuts_model), &iter,
                      SHORTCUTS_COL_CANCELLABLE, &model_cancellable,
                      -1);
   if (cancellable != model_cancellable)
     goto out;
 
   /* set the cancellable to NULL in the model (we unref later on) */
-  gtk_list_store_set (request->impl->priv->shortcuts_model, &iter,
+  gtk_list_store_set (request->impl->shortcuts_model, &iter,
                      SHORTCUTS_COL_CANCELLABLE, NULL,
                      -1);
 
@@ -1360,7 +1479,7 @@ get_file_info_finished (GCancellable *cancellable,
 
   if (!info)
     {
-      gtk_list_store_remove (request->impl->priv->shortcuts_model, &iter);
+      gtk_list_store_remove (request->impl->shortcuts_model, &iter);
       shortcuts_update_count (request->impl, request->type, -1);
 
       if (request->type == SHORTCUTS_HOME)
@@ -1384,9 +1503,9 @@ get_file_info_finished (GCancellable *cancellable,
   if (!request->label_copy)
     request->label_copy = g_strdup (g_file_info_get_display_name (info));
   pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (request->impl),
-                                      request->impl->priv->icon_size);
+                                      request->impl->icon_size);
 
-  gtk_list_store_set (request->impl->priv->shortcuts_model, &iter,
+  gtk_list_store_set (request->impl->shortcuts_model, &iter,
                      SHORTCUTS_COL_PIXBUF, pixbuf,
                      SHORTCUTS_COL_PIXBUF_VISIBLE, TRUE,
                      SHORTCUTS_COL_NAME, request->label_copy,
@@ -1394,8 +1513,8 @@ get_file_info_finished (GCancellable *cancellable,
                      SHORTCUTS_COL_REMOVABLE, request->removable,
                      -1);
 
-  if (request->impl->priv->shortcuts_pane_filter_model)
-    gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER 
(request->impl->priv->shortcuts_pane_filter_model));
+  if (request->impl->shortcuts_pane_filter_model)
+    gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (request->impl->shortcuts_pane_filter_model));
 
   if (pixbuf)
     g_object_unref (pixbuf);
@@ -1493,7 +1612,7 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
       data = volume;
       label_copy = _gtk_file_system_volume_get_display_name (volume);
       pixbuf = _gtk_file_system_volume_render_icon (volume, GTK_WIDGET (impl),
-                                                   impl->priv->icon_size, NULL);
+                                                   impl->icon_size, NULL);
     }
   else if (shortcut_type == SHORTCUT_TYPE_FILE)
     {
@@ -1514,19 +1633,19 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
            request->label_copy = g_strdup (label);
 
           if (pos == -1)
-           gtk_list_store_append (impl->priv->shortcuts_model, &iter);
+           gtk_list_store_append (impl->shortcuts_model, &iter);
           else
-           gtk_list_store_insert (impl->priv->shortcuts_model, &iter, pos);
+           gtk_list_store_insert (impl->shortcuts_model, &iter, pos);
 
-          p = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter);
-          request->row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (impl->priv->shortcuts_model), p);
+          p = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->shortcuts_model), &iter);
+          request->row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (impl->shortcuts_model), p);
           gtk_tree_path_free (p);
 
-          cancellable = _gtk_file_system_get_info (request->impl->priv->file_system, request->file,
+          cancellable = _gtk_file_system_get_info (request->impl->file_system, request->file,
                                                   
"standard::is-hidden,standard::is-backup,standard::display-name,standard::icon",
                                                   get_file_info_finished, request);
 
-          gtk_list_store_set (impl->priv->shortcuts_model, &iter,
+          gtk_list_store_set (impl->shortcuts_model, &iter,
                              SHORTCUTS_COL_DATA, g_object_ref (file),
                              SHORTCUTS_COL_TYPE, SHORTCUT_TYPE_FILE,
                              SHORTCUTS_COL_CANCELLABLE, cancellable,
@@ -1552,7 +1671,7 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
            */
           icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
           pixbuf = gtk_icon_theme_load_icon (icon_theme, "folder-remote", 
-                                            impl->priv->icon_size, 0, NULL);
+                                            impl->icon_size, 0, NULL);
         }
     }
    else
@@ -1563,13 +1682,13 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
     }
 
   if (pos == -1)
-    gtk_list_store_append (impl->priv->shortcuts_model, &iter);
+    gtk_list_store_append (impl->shortcuts_model, &iter);
   else
-    gtk_list_store_insert (impl->priv->shortcuts_model, &iter, pos);
+    gtk_list_store_insert (impl->shortcuts_model, &iter, pos);
 
   shortcuts_update_count (impl, type, 1);
 
-  gtk_list_store_set (impl->priv->shortcuts_model, &iter,
+  gtk_list_store_set (impl->shortcuts_model, &iter,
                      SHORTCUTS_COL_PIXBUF, pixbuf,
                      SHORTCUTS_COL_PIXBUF_VISIBLE, TRUE,
                      SHORTCUTS_COL_NAME, label_copy,
@@ -1579,8 +1698,8 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
                      SHORTCUTS_COL_CANCELLABLE, NULL,
                      -1);
 
-  if (impl->priv->shortcuts_pane_filter_model)
-    gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model));
+  if (impl->shortcuts_pane_filter_model)
+    gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model));
 
   g_free (label_copy);
 
@@ -1598,8 +1717,8 @@ shortcuts_append_search (GtkFileChooserDefault *impl)
 
   pixbuf = render_search_icon (impl);
 
-  gtk_list_store_append (impl->priv->shortcuts_model, &iter);
-  gtk_list_store_set (impl->priv->shortcuts_model, &iter,
+  gtk_list_store_append (impl->shortcuts_model, &iter);
+  gtk_list_store_set (impl->shortcuts_model, &iter,
                      SHORTCUTS_COL_PIXBUF, pixbuf,
                      SHORTCUTS_COL_PIXBUF_VISIBLE, TRUE,
                      SHORTCUTS_COL_NAME, _("Search"),
@@ -1611,7 +1730,7 @@ shortcuts_append_search (GtkFileChooserDefault *impl)
   if (pixbuf)
     g_object_unref (pixbuf);
 
-  impl->priv->has_search = TRUE;
+  impl->has_search = TRUE;
 }
 
 static gboolean
@@ -1642,8 +1761,8 @@ shortcuts_append_recent (GtkFileChooserDefault *impl)
 
   pixbuf = render_recent_icon (impl);
 
-  gtk_list_store_append (impl->priv->shortcuts_model, &iter);
-  gtk_list_store_set (impl->priv->shortcuts_model, &iter,
+  gtk_list_store_append (impl->shortcuts_model, &iter);
+  gtk_list_store_set (impl->shortcuts_model, &iter,
                       SHORTCUTS_COL_PIXBUF, pixbuf,
                       SHORTCUTS_COL_PIXBUF_VISIBLE, TRUE,
                       SHORTCUTS_COL_NAME, _("Recently Used"),
@@ -1655,7 +1774,7 @@ shortcuts_append_recent (GtkFileChooserDefault *impl)
   if (pixbuf)
     g_object_unref (pixbuf);
 
-  impl->priv->has_recent = TRUE;
+  impl->has_recent = TRUE;
 }
 
 /* Appends an item for the user's home directory to the shortcuts model */
@@ -1676,7 +1795,7 @@ shortcuts_append_home (GtkFileChooserDefault *impl)
 
   home = g_file_new_for_path (home_path);
   shortcuts_insert_file (impl, -1, SHORTCUT_TYPE_FILE, NULL, home, NULL, FALSE, SHORTCUTS_HOME);
-  impl->priv->has_home = TRUE;
+  impl->has_home = TRUE;
 
   g_object_unref (home);
 
@@ -1704,7 +1823,7 @@ shortcuts_append_desktop (GtkFileChooserDefault *impl)
 
   file = g_file_new_for_path (name);
   shortcuts_insert_file (impl, -1, SHORTCUT_TYPE_FILE, NULL, file, _("Desktop"), FALSE, SHORTCUTS_DESKTOP);
-  impl->priv->has_desktop = TRUE;
+  impl->has_desktop = TRUE;
 
   /* We do not actually pop up an error dialog if there is no desktop directory
    * because some people may really not want to have one.
@@ -1735,13 +1854,13 @@ shortcuts_append_bookmarks (GtkFileChooserDefault *impl,
 
       file = bookmarks->data;
 
-      if (impl->priv->local_only && !_gtk_file_has_native_path (file))
+      if (impl->local_only && !_gtk_file_has_native_path (file))
        continue;
 
       if (shortcut_find_position (impl, file) != -1)
         continue;
 
-      label = _gtk_file_system_get_bookmark_label (impl->priv->file_system, file);
+      label = _gtk_file_system_get_bookmark_label (impl->file_system, file);
 
       shortcuts_insert_file (impl, start_row + num_inserted, SHORTCUT_TYPE_FILE, NULL, file, label, TRUE, 
SHORTCUTS_BOOKMARKS);
       g_free (label);
@@ -1766,12 +1885,12 @@ shortcuts_get_index (GtkFileChooserDefault *impl,
   if (where == SHORTCUTS_SEARCH)
     goto out;
 
-  n += impl->priv->has_search ? 1 : 0;
+  n += impl->has_search ? 1 : 0;
 
   if (where == SHORTCUTS_RECENT)
     goto out;
 
-  n += impl->priv->has_recent ? 1 : 0;
+  n += impl->has_recent ? 1 : 0;
 
   if (where == SHORTCUTS_RECENT_SEPARATOR)
     goto out;
@@ -1781,33 +1900,33 @@ shortcuts_get_index (GtkFileChooserDefault *impl,
   if (where == SHORTCUTS_HOME)
     goto out;
 
-  n += impl->priv->has_home ? 1 : 0;
+  n += impl->has_home ? 1 : 0;
 
   if (where == SHORTCUTS_DESKTOP)
     goto out;
 
-  n += impl->priv->has_desktop ? 1 : 0;
+  n += impl->has_desktop ? 1 : 0;
 
   if (where == SHORTCUTS_VOLUMES)
     goto out;
 
-  n += impl->priv->num_volumes;
+  n += impl->num_volumes;
 
   if (where == SHORTCUTS_SHORTCUTS)
     goto out;
 
-  n += impl->priv->num_shortcuts;
+  n += impl->num_shortcuts;
 
   if (where == SHORTCUTS_BOOKMARKS_SEPARATOR)
     goto out;
 
   /* If there are no bookmarks there won't be a separator */
-  n += (impl->priv->num_bookmarks > 0) ? 1 : 0;
+  n += (impl->num_bookmarks > 0) ? 1 : 0;
 
   if (where == SHORTCUTS_BOOKMARKS)
     goto out;
 
-  n += impl->priv->num_bookmarks;
+  n += impl->num_bookmarks;
 
   if (where == SHORTCUTS_CURRENT_FOLDER_SEPARATOR)
     goto out;
@@ -1835,14 +1954,14 @@ shortcuts_add_volumes (GtkFileChooserDefault *impl)
 
   profile_start ("start", NULL);
 
-  old_changing_folders = impl->priv->changing_folder;
-  impl->priv->changing_folder = TRUE;
+  old_changing_folders = impl->changing_folder;
+  impl->changing_folder = TRUE;
 
   start_row = shortcuts_get_index (impl, SHORTCUTS_VOLUMES);
-  shortcuts_remove_rows (impl, start_row, impl->priv->num_volumes);
-  impl->priv->num_volumes = 0;
+  shortcuts_remove_rows (impl, start_row, impl->num_volumes);
+  impl->num_volumes = 0;
 
-  list = _gtk_file_system_list_volumes (impl->priv->file_system);
+  list = _gtk_file_system_list_volumes (impl->file_system);
 
   n = 0;
 
@@ -1852,7 +1971,7 @@ shortcuts_add_volumes (GtkFileChooserDefault *impl)
 
       volume = l->data;
 
-      if (impl->priv->local_only)
+      if (impl->local_only)
        {
          if (_gtk_file_system_volume_is_mounted (volume))
            {
@@ -1882,13 +2001,13 @@ shortcuts_add_volumes (GtkFileChooserDefault *impl)
       n++;
     }
 
-  impl->priv->num_volumes = n;
+  impl->num_volumes = n;
   g_slist_free (list);
 
-  if (impl->priv->shortcuts_pane_filter_model)
-    gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model));
+  if (impl->shortcuts_pane_filter_model)
+    gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model));
 
-  impl->priv->changing_folder = old_changing_folders;
+  impl->changing_folder = old_changing_folders;
 
   profile_end ("end", NULL);
 }
@@ -1904,9 +2023,9 @@ shortcuts_insert_separator (GtkFileChooserDefault *impl,
             where == SHORTCUTS_BOOKMARKS_SEPARATOR || 
            where == SHORTCUTS_CURRENT_FOLDER_SEPARATOR);
 
-  gtk_list_store_insert (impl->priv->shortcuts_model, &iter,
+  gtk_list_store_insert (impl->shortcuts_model, &iter,
                         shortcuts_get_index (impl, where));
-  gtk_list_store_set (impl->priv->shortcuts_model, &iter,
+  gtk_list_store_set (impl->shortcuts_model, &iter,
                      SHORTCUTS_COL_PIXBUF, NULL,
                      SHORTCUTS_COL_PIXBUF_VISIBLE, FALSE,
                      SHORTCUTS_COL_NAME, NULL,
@@ -1928,12 +2047,12 @@ shortcuts_add_bookmarks (GtkFileChooserDefault *impl)
 
   profile_start ("start", NULL);
         
-  old_changing_folders = impl->priv->changing_folder;
-  impl->priv->changing_folder = TRUE;
+  old_changing_folders = impl->changing_folder;
+  impl->changing_folder = TRUE;
 
   if (shortcuts_get_selected (impl, &iter))
     {
-      gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), 
+      gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), 
                          &iter, 
                          SHORTCUTS_COL_DATA, &col_data,
                          SHORTCUTS_COL_TYPE, &shortcut_type,
@@ -1943,24 +2062,24 @@ shortcuts_add_bookmarks (GtkFileChooserDefault *impl)
        list_selected = g_object_ref (col_data);
     }
 
-  if (impl->priv->num_bookmarks > 0)
+  if (impl->num_bookmarks > 0)
     shortcuts_remove_rows (impl,
                           shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS_SEPARATOR),
-                          impl->priv->num_bookmarks + 1);
+                          impl->num_bookmarks + 1);
 
-  impl->priv->num_bookmarks = 0;
+  impl->num_bookmarks = 0;
   shortcuts_insert_separator (impl, SHORTCUTS_BOOKMARKS_SEPARATOR);
 
-  bookmarks = _gtk_file_system_list_bookmarks (impl->priv->file_system);
+  bookmarks = _gtk_file_system_list_bookmarks (impl->file_system);
   shortcuts_append_bookmarks (impl, bookmarks);
   g_slist_foreach (bookmarks, (GFunc) g_object_unref, NULL);
   g_slist_free (bookmarks);
 
-  if (impl->priv->num_bookmarks == 0)
+  if (impl->num_bookmarks == 0)
     shortcuts_remove_rows (impl, shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS_SEPARATOR), 1);
 
-  if (impl->priv->shortcuts_pane_filter_model)
-    gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model));
+  if (impl->shortcuts_pane_filter_model)
+    gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model));
 
   if (list_selected)
     {
@@ -1968,7 +2087,7 @@ shortcuts_add_bookmarks (GtkFileChooserDefault *impl)
       g_object_unref (list_selected);
     }
 
-  impl->priv->changing_folder = old_changing_folders;
+  impl->changing_folder = old_changing_folders;
 
   profile_end ("end", NULL);
 }
@@ -1979,11 +2098,11 @@ shortcuts_add_current_folder (GtkFileChooserDefault *impl)
 {
   int pos;
 
-  g_assert (!impl->priv->shortcuts_current_folder_active);
+  g_assert (!impl->shortcuts_current_folder_active);
 
-  g_assert (impl->priv->current_folder != NULL);
+  g_assert (impl->current_folder != NULL);
 
-  pos = shortcut_find_position (impl, impl->priv->current_folder);
+  pos = shortcut_find_position (impl, impl->current_folder);
   if (pos == -1)
     {
       GtkFileSystemVolume *volume;
@@ -1995,16 +2114,16 @@ shortcuts_add_current_folder (GtkFileChooserDefault *impl)
       /* Item */
       pos = shortcuts_get_index (impl, SHORTCUTS_CURRENT_FOLDER);
 
-      volume = _gtk_file_system_get_volume_for_file (impl->priv->file_system, impl->priv->current_folder);
+      volume = _gtk_file_system_get_volume_for_file (impl->file_system, impl->current_folder);
       if (volume)
         base_file = _gtk_file_system_volume_get_root (volume);
       else
         base_file = NULL;
 
-      if (base_file && g_file_equal (base_file, impl->priv->current_folder))
+      if (base_file && g_file_equal (base_file, impl->current_folder))
         shortcuts_insert_file (impl, pos, SHORTCUT_TYPE_VOLUME, volume, NULL, NULL, FALSE, 
SHORTCUTS_CURRENT_FOLDER);
       else
-        shortcuts_insert_file (impl, pos, SHORTCUT_TYPE_FILE, NULL, impl->priv->current_folder, NULL, FALSE, 
SHORTCUTS_CURRENT_FOLDER);
+        shortcuts_insert_file (impl, pos, SHORTCUT_TYPE_FILE, NULL, impl->current_folder, NULL, FALSE, 
SHORTCUTS_CURRENT_FOLDER);
 
       if (base_file)
         g_object_unref (base_file);
@@ -2019,10 +2138,10 @@ shortcuts_update_current_folder (GtkFileChooserDefault *impl)
 
   pos = shortcuts_get_index (impl, SHORTCUTS_CURRENT_FOLDER_SEPARATOR);
 
-  if (impl->priv->shortcuts_current_folder_active)
+  if (impl->shortcuts_current_folder_active)
     {
       shortcuts_remove_rows (impl, pos, 2);
-      impl->priv->shortcuts_current_folder_active = FALSE;
+      impl->shortcuts_current_folder_active = FALSE;
     }
 
   shortcuts_add_current_folder (impl);
@@ -2052,24 +2171,38 @@ shortcuts_pane_filter_cb (GtkTreeModel *model,
 
 /* Creates the list model for shortcuts */
 static void
-shortcuts_model_populate (GtkFileChooserDefault *impl)
+shortcuts_model_create (GtkFileChooserDefault *impl)
 {
+  /* Keep this order in sync with the SHORCUTS_COL_* enum values */
+  impl->shortcuts_model = gtk_list_store_new (SHORTCUTS_COL_NUM_COLUMNS,
+                                             GDK_TYPE_PIXBUF,  /* pixbuf */
+                                             G_TYPE_STRING,    /* name */
+                                             G_TYPE_POINTER,   /* path or volume */
+                                             G_TYPE_INT,       /* ShortcutType */
+                                             G_TYPE_BOOLEAN,   /* removable */
+                                             G_TYPE_BOOLEAN,   /* pixbuf cell visibility */
+                                             G_TYPE_POINTER);  /* GCancellable */
+
   shortcuts_append_search (impl);
 
-  if (impl->priv->recent_manager)
+  if (impl->recent_manager)
     {
       shortcuts_append_recent (impl);
       shortcuts_insert_separator (impl, SHORTCUTS_RECENT_SEPARATOR);
     }
   
-  if (impl->priv->file_system)
+  if (impl->file_system)
     {
       shortcuts_append_home (impl);
       shortcuts_append_desktop (impl);
       shortcuts_add_volumes (impl);
     }
 
-  gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model),
+  impl->shortcuts_pane_filter_model = shortcuts_pane_model_filter_new (impl,
+                                                                      GTK_TREE_MODEL (impl->shortcuts_model),
+                                                                      NULL);
+
+  gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model),
                                          shortcuts_pane_filter_cb,
                                          impl,
                                          NULL);
@@ -2083,23 +2216,23 @@ new_folder_button_clicked (GtkButton             *button,
   GtkTreeIter iter;
   GtkTreePath *path;
 
-  if (!impl->priv->browse_files_model)
+  if (!impl->browse_files_model)
     return; /* FIXME: this sucks.  Disable the New Folder button or something. */
 
   /* Prevent button from being clicked twice */
-  gtk_widget_set_sensitive (impl->priv->browse_new_folder_button, FALSE);
+  gtk_widget_set_sensitive (impl->browse_new_folder_button, FALSE);
 
-  _gtk_file_system_model_add_editable (impl->priv->browse_files_model, &iter);
+  _gtk_file_system_model_add_editable (impl->browse_files_model, &iter);
 
-  path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->browse_files_model), &iter);
-  gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
-                               path, impl->priv->list_name_column,
+  path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->browse_files_model), &iter);
+  gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (impl->browse_files_tree_view),
+                               path, impl->list_name_column,
                                FALSE, 0.0, 0.0);
 
-  g_object_set (impl->priv->list_name_renderer, "editable", TRUE, NULL);
-  gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+  g_object_set (impl->list_name_renderer, "editable", TRUE, NULL);
+  gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view),
                            path,
-                           impl->priv->list_name_column,
+                           impl->list_name_column,
                            TRUE);
 
   gtk_tree_path_free (path);
@@ -2126,23 +2259,23 @@ edited_idle_cb (GtkFileChooserDefault *impl)
 {
   gdk_threads_enter ();
   
-  g_source_destroy (impl->priv->edited_idle);
-  impl->priv->edited_idle = NULL;
+  g_source_destroy (impl->edited_idle);
+  impl->edited_idle = NULL;
 
-  _gtk_file_system_model_remove_editable (impl->priv->browse_files_model);
-  g_object_set (impl->priv->list_name_renderer, "editable", FALSE, NULL);
+  _gtk_file_system_model_remove_editable (impl->browse_files_model);
+  g_object_set (impl->list_name_renderer, "editable", FALSE, NULL);
 
-  gtk_widget_set_sensitive (impl->priv->browse_new_folder_button, TRUE);
+  gtk_widget_set_sensitive (impl->browse_new_folder_button, TRUE);
 
-  if (impl->priv->edited_new_text /* not cancelled? */
-      && (strlen (impl->priv->edited_new_text) != 0)
-      && (strcmp (impl->priv->edited_new_text, DEFAULT_NEW_FOLDER_NAME) != 0)) /* Don't create folder if 
name is empty or has not been edited */
+  if (impl->edited_new_text /* not cancelled? */
+      && (strlen (impl->edited_new_text) != 0)
+      && (strcmp (impl->edited_new_text, DEFAULT_NEW_FOLDER_NAME) != 0)) /* Don't create folder if name is 
empty or has not been edited */
     {
       GError *error = NULL;
       GFile *file;
 
-      file = g_file_get_child_for_display_name (impl->priv->current_folder,
-                                               impl->priv->edited_new_text,
+      file = g_file_get_child_for_display_name (impl->current_folder,
+                                               impl->edited_new_text,
                                                &error);
       if (file)
        {
@@ -2158,8 +2291,8 @@ edited_idle_cb (GtkFileChooserDefault *impl)
       else
        error_creating_folder_dialog (impl, file, error);
 
-      g_free (impl->priv->edited_new_text);
-      impl->priv->edited_new_text = NULL;
+      g_free (impl->edited_new_text);
+      impl->edited_new_text = NULL;
     }
 
   gdk_threads_leave ();
@@ -2175,11 +2308,11 @@ queue_edited_idle (GtkFileChooserDefault *impl,
    * just now.
    */
 
-  if (!impl->priv->edited_idle)
-    impl->priv->edited_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (edited_idle_cb));
+  if (!impl->edited_idle)
+    impl->edited_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (edited_idle_cb));
 
-  g_free (impl->priv->edited_new_text);
-  impl->priv->edited_new_text = g_strdup (new_text);
+  g_free (impl->edited_new_text);
+  impl->edited_new_text = g_strdup (new_text);
 }
 
 /* Callback used from the text cell renderer when the new folder is named */
@@ -2208,6 +2341,60 @@ renderer_editing_canceled_cb (GtkCellRendererText   *cell_renderer_text,
   queue_edited_idle (impl, NULL);
 }
 
+/* Creates the widgets for the filter combo box */
+static GtkWidget *
+filter_create (GtkFileChooserDefault *impl)
+{
+  GtkCellRenderer *cell;
+  GList           *cells;
+
+  impl->filter_combo = gtk_combo_box_text_new ();
+  gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (impl->filter_combo), FALSE);
+
+  /* Get the combo's text renderer and set ellipsize parameters */
+  cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (impl->filter_combo));
+  g_assert (cells);
+  cell = cells->data;
+
+  g_object_set (G_OBJECT (cell),
+               "ellipsize", PANGO_ELLIPSIZE_END,
+               NULL);
+
+  g_list_free (cells);
+
+  g_signal_connect (impl->filter_combo, "changed",
+                   G_CALLBACK (filter_combo_changed), impl);
+
+  gtk_widget_set_tooltip_text (impl->filter_combo,
+                               _("Select which types of files are shown"));
+
+  return impl->filter_combo;
+}
+
+static GtkWidget *
+toolbutton_new (GtkFileChooserDefault *impl,
+                GIcon                 *icon,
+                gboolean               sensitive,
+                gboolean               show,
+                GCallback              callback)
+{
+  GtkToolItem *item;
+  GtkWidget *image;
+
+  item = gtk_tool_button_new (NULL, NULL);
+  image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_SMALL_TOOLBAR);
+  gtk_widget_show (image);
+  gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (item), image);
+
+  gtk_widget_set_sensitive (GTK_WIDGET (item), sensitive);
+  g_signal_connect (item, "clicked", callback, impl);
+
+  if (show)
+    gtk_widget_show (GTK_WIDGET (item));
+
+  return GTK_WIDGET (item);
+}
+
 /* Looks for a path among the shortcuts; returns its index or -1 if it doesn't exist */
 static int
 shortcut_find_position (GtkFileChooserDefault *impl,
@@ -2217,14 +2404,14 @@ shortcut_find_position (GtkFileChooserDefault *impl,
   int i;
   int current_folder_separator_idx;
 
-  if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
+  if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
     return -1;
 
   current_folder_separator_idx = shortcuts_get_index (impl, SHORTCUTS_CURRENT_FOLDER_SEPARATOR);
 
 #if 0
   /* FIXME: is this still needed? */
-  if (current_folder_separator_idx >= impl->priv->shortcuts_model->length)
+  if (current_folder_separator_idx >= impl->shortcuts_model->length)
     return -1;
 #endif
 
@@ -2233,7 +2420,7 @@ shortcut_find_position (GtkFileChooserDefault *impl,
       gpointer col_data;
       ShortcutType shortcut_type;
 
-      gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+      gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                          SHORTCUTS_COL_DATA, &col_data,
                          SHORTCUTS_COL_TYPE, &shortcut_type,
                          -1);
@@ -2270,7 +2457,7 @@ shortcut_find_position (GtkFileChooserDefault *impl,
 
       if (i < current_folder_separator_idx - 1)
        {
-         if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
+         if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
            g_assert_not_reached ();
        }
     }
@@ -2292,7 +2479,7 @@ shortcuts_add_bookmark_from_file (GtkFileChooserDefault *impl,
     return FALSE;
 
   error = NULL;
-  if (!_gtk_file_system_insert_bookmark (impl->priv->file_system, file, pos, &error))
+  if (!_gtk_file_system_insert_bookmark (impl->file_system, file, pos, &error))
     {
       error_adding_bookmark_dialog (impl, file, error);
       return FALSE;
@@ -2327,10 +2514,10 @@ bookmarks_add_selected_folder (GtkFileChooserDefault *impl)
 {
   GtkTreeSelection *selection;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
 
   if (gtk_tree_selection_count_selected_rows (selection) == 0)
-    shortcuts_add_bookmark_from_file (impl, impl->priv->current_folder, -1);
+    shortcuts_add_bookmark_from_file (impl, impl->current_folder, -1);
   else
     gtk_tree_selection_selected_foreach (selection,
                                         add_bookmark_foreach_cb,
@@ -2355,15 +2542,15 @@ shortcuts_get_selected (GtkFileChooserDefault *impl,
   GtkTreeSelection *selection;
   GtkTreeIter parent_iter;
 
-  if (!impl->priv->browse_shortcuts_tree_view)
+  if (!impl->browse_shortcuts_tree_view)
     return FALSE;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
 
   if (!gtk_tree_selection_get_selected (selection, NULL, &parent_iter))
     return FALSE;
 
-  gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER 
(impl->priv->shortcuts_pane_filter_model),
+  gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER 
(impl->shortcuts_pane_filter_model),
                                                    iter,
                                                    &parent_iter);
   return TRUE;
@@ -2382,7 +2569,7 @@ remove_selected_bookmarks (GtkFileChooserDefault *impl)
   if (!shortcuts_get_selected (impl, &iter))
     return;
 
-  gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+  gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                      SHORTCUTS_COL_DATA, &col_data,
                      SHORTCUTS_COL_REMOVABLE, &removable,
                      -1);
@@ -2395,7 +2582,7 @@ remove_selected_bookmarks (GtkFileChooserDefault *impl)
   file = col_data;
 
   error = NULL;
-  if (!_gtk_file_system_remove_bookmark (impl->priv->file_system, file, &error))
+  if (!_gtk_file_system_remove_bookmark (impl->file_system, file, &error))
     error_removing_bookmark_dialog (impl, file, error);
 }
 
@@ -2457,7 +2644,7 @@ selection_check (GtkFileChooserDefault *impl,
   closure.all_files = TRUE;
   closure.all_folders = TRUE;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   gtk_tree_selection_selected_foreach (selection,
                                       selection_check_foreach_cb,
                                       &closure);
@@ -2509,7 +2696,7 @@ get_selected_file (GtkFileChooserDefault *impl)
   closure.impl = impl;
   closure.file = NULL;
 
-  selection =  gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection =  gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   gtk_tree_selection_selected_foreach (selection,
                                       get_selected_file_foreach_cb,
                                       &closure);
@@ -2560,7 +2747,7 @@ bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl)
   selection_check (impl, &num_selected, NULL, &all_folders);
 
   if (num_selected == 0)
-    active = (impl->priv->current_folder != NULL) && (shortcut_find_position (impl, 
impl->priv->current_folder) == -1);
+    active = (impl->current_folder != NULL) && (shortcut_find_position (impl, impl->current_folder) == -1);
   else if (num_selected == 1)
     {
       GFile *file;
@@ -2573,10 +2760,10 @@ bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl)
   else
     active = all_folders;
 
-  gtk_widget_set_sensitive (impl->priv->browse_shortcuts_add_button, active);
+  gtk_widget_set_sensitive (impl->browse_shortcuts_add_button, active);
 
-  if (impl->priv->browse_files_popup_menu_add_shortcut_item)
-    gtk_widget_set_sensitive (impl->priv->browse_files_popup_menu_add_shortcut_item,
+  if (impl->browse_files_popup_menu_add_shortcut_item)
+    gtk_widget_set_sensitive (impl->browse_files_popup_menu_add_shortcut_item,
                               (num_selected == 0) ? FALSE : active);
 
   if (active)
@@ -2590,14 +2777,14 @@ bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl)
           GtkTreeSelection *selection;
           UpdateTooltipData data;
 
-          selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+          selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
           data.impl = impl;
           data.tip = NULL;
           gtk_tree_selection_selected_foreach (selection, update_tooltip, &data);
           tip = data.tip;
         }
 
-      gtk_widget_set_tooltip_text (impl->priv->browse_shortcuts_add_button, tip);
+      gtk_widget_set_tooltip_text (impl->browse_shortcuts_add_button, tip);
       g_free (tip);
     }
 }
@@ -2615,22 +2802,22 @@ bookmarks_check_remove_sensitivity (GtkFileChooserDefault *impl)
   
   if (shortcuts_get_selected (impl, &iter))
     {
-      gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+      gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                           SHORTCUTS_COL_REMOVABLE, &removable,
                           SHORTCUTS_COL_NAME, &name,
                           -1);
-      gtk_widget_set_sensitive (impl->priv->browse_shortcuts_remove_button, removable);
+      gtk_widget_set_sensitive (impl->browse_shortcuts_remove_button, removable);
 
       if (removable)
         tip = g_strdup_printf (_("Remove the bookmark '%s'"), name);
       else
         tip = g_strdup_printf (_("Bookmark '%s' cannot be removed"), name);
 
-      gtk_widget_set_tooltip_text (impl->priv->browse_shortcuts_remove_button, tip);
+      gtk_widget_set_tooltip_text (impl->browse_shortcuts_remove_button, tip);
       g_free (tip);
     }
   else
-    gtk_widget_set_tooltip_text (impl->priv->browse_shortcuts_remove_button,
+    gtk_widget_set_tooltip_text (impl->browse_shortcuts_remove_button,
                                  _("Remove the selected bookmark"));
   g_free (name);
 }
@@ -2641,16 +2828,16 @@ shortcuts_check_popup_sensitivity (GtkFileChooserDefault *impl)
   GtkTreeIter iter;
   gboolean removable = FALSE;
 
-  if (impl->priv->browse_shortcuts_popup_menu == NULL)
+  if (impl->browse_shortcuts_popup_menu == NULL)
     return;
 
   if (shortcuts_get_selected (impl, &iter))
-    gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+    gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                        SHORTCUTS_COL_REMOVABLE, &removable,
                        -1);
 
-  gtk_widget_set_sensitive (impl->priv->browse_shortcuts_popup_menu_remove_item, removable);
-  gtk_widget_set_sensitive (impl->priv->browse_shortcuts_popup_menu_rename_item, removable);
+  gtk_widget_set_sensitive (impl->browse_shortcuts_popup_menu_remove_item, removable);
+  gtk_widget_set_sensitive (impl->browse_shortcuts_popup_menu_rename_item, removable);
 }
 
 /* GtkWidget::drag-begin handler for the shortcuts list. */
@@ -2660,7 +2847,7 @@ shortcuts_drag_begin_cb (GtkWidget             *widget,
                         GtkFileChooserDefault *impl)
 {
 #if 0
-  impl->priv->shortcuts_drag_context = g_object_ref (context);
+  impl->shortcuts_drag_context = g_object_ref (context);
 #endif
 }
 
@@ -2669,11 +2856,11 @@ shortcuts_drag_begin_cb (GtkWidget             *widget,
 static void
 shortcuts_cancel_drag_outside_idle (GtkFileChooserDefault *impl)
 {
-  if (!impl->priv->shortcuts_drag_outside_idle)
+  if (!impl->shortcuts_drag_outside_idle)
     return;
 
-  g_source_destroy (impl->priv->shortcuts_drag_outside_idle);
-  impl->priv->shortcuts_drag_outside_idle = NULL;
+  g_source_destroy (impl->shortcuts_drag_outside_idle);
+  impl->shortcuts_drag_outside_idle = NULL;
 }
 #endif
 
@@ -2684,16 +2871,16 @@ shortcuts_drag_end_cb (GtkWidget             *widget,
                       GtkFileChooserDefault *impl)
 {
 #if 0
-  g_object_unref (impl->priv->shortcuts_drag_context);
+  g_object_unref (impl->shortcuts_drag_context);
 
   shortcuts_cancel_drag_outside_idle (impl);
 
-  if (!impl->priv->shortcuts_drag_outside)
+  if (!impl->shortcuts_drag_outside)
     return;
 
-  gtk_button_clicked (GTK_BUTTON (impl->priv->browse_shortcuts_remove_button));
+  gtk_button_clicked (GTK_BUTTON (impl->browse_shortcuts_remove_button));
 
-  impl->priv->shortcuts_drag_outside = FALSE;
+  impl->shortcuts_drag_outside = FALSE;
 #endif
 }
 
@@ -2716,13 +2903,13 @@ shortcuts_drag_leave_cb (GtkWidget             *widget,
                         GtkFileChooserDefault *impl)
 {
 #if 0
-  if (gtk_drag_get_source_widget (context) == widget && !impl->priv->shortcuts_drag_outside_idle)
+  if (gtk_drag_get_source_widget (context) == widget && !impl->shortcuts_drag_outside_idle)
     {
-      impl->priv->shortcuts_drag_outside_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK 
(shortcuts_drag_outside_idle_cb));
+      impl->shortcuts_drag_outside_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK 
(shortcuts_drag_outside_idle_cb));
     }
 #endif
 
-  gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
+  gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
                                   NULL,
                                   GTK_TREE_VIEW_DROP_BEFORE);
 
@@ -2745,7 +2932,7 @@ shortcuts_compute_drop_position (GtkFileChooserDefault   *impl,
   int bookmarks_index;
   int header_height = 0;
 
-  tree_view = GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view);
+  tree_view = GTK_TREE_VIEW (impl->browse_shortcuts_tree_view);
 
   if (gtk_tree_view_get_headers_visible (tree_view))
     header_height = _gtk_tree_view_get_header_height (tree_view);
@@ -2760,7 +2947,7 @@ shortcuts_compute_drop_position (GtkFileChooserDefault   *impl,
                                       NULL,
                                       &cell_y))
     {
-      row = bookmarks_index + impl->priv->num_bookmarks - 1;
+      row = bookmarks_index + impl->num_bookmarks - 1;
       *path = gtk_tree_path_new_from_indices (row, -1);
       *pos = GTK_TREE_VIEW_DROP_AFTER;
       return;
@@ -2775,9 +2962,9 @@ shortcuts_compute_drop_position (GtkFileChooserDefault   *impl,
       row = bookmarks_index;
       *pos = GTK_TREE_VIEW_DROP_BEFORE;
     }
-  else if (row > bookmarks_index + impl->priv->num_bookmarks - 1)
+  else if (row > bookmarks_index + impl->num_bookmarks - 1)
     {
-      row = bookmarks_index + impl->priv->num_bookmarks - 1;
+      row = bookmarks_index + impl->num_bookmarks - 1;
       *pos = GTK_TREE_VIEW_DROP_AFTER;
     }
   else
@@ -2812,10 +2999,10 @@ shortcuts_drag_motion_cb (GtkWidget             *widget,
     {
       shortcuts_cancel_drag_outside_idle (impl);
 
-      if (impl->priv->shortcuts_drag_outside)
+      if (impl->shortcuts_drag_outside)
        {
          shortcuts_drag_set_delete_cursor (impl, FALSE);
-         impl->priv->shortcuts_drag_outside = FALSE;
+         impl->shortcuts_drag_outside = FALSE;
        }
     }
 #endif
@@ -2833,7 +3020,7 @@ shortcuts_drag_motion_cb (GtkWidget             *widget,
     }
 
   shortcuts_compute_drop_position (impl, x, y, &path, &pos);
-  gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view), path, pos);
+  gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), path, pos);
   gtk_tree_path_free (path);
 
  out:
@@ -2916,15 +3103,15 @@ shortcuts_reorder (GtkFileChooserDefault *impl,
   if (!shortcuts_get_selected (impl, &iter))
     g_assert_not_reached ();
 
-  path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter);
+  path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->shortcuts_model), &iter);
   old_position = *gtk_tree_path_get_indices (path);
   gtk_tree_path_free (path);
 
   bookmarks_index = shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS);
   old_position -= bookmarks_index;
-  g_assert (old_position >= 0 && old_position < impl->priv->num_bookmarks);
+  g_assert (old_position >= 0 && old_position < impl->num_bookmarks);
 
-  gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+  gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                      SHORTCUTS_COL_NAME, &name,
                      SHORTCUTS_COL_DATA, &col_data,
                      SHORTCUTS_COL_TYPE, &shortcut_type,
@@ -2944,10 +3131,10 @@ shortcuts_reorder (GtkFileChooserDefault *impl,
     goto out;
 
   error = NULL;
-  if (_gtk_file_system_remove_bookmark (impl->priv->file_system, file, &error))
+  if (_gtk_file_system_remove_bookmark (impl->file_system, file, &error))
     {
       shortcuts_add_bookmark_from_file (impl, file, new_position);
-      _gtk_file_system_set_bookmark_label (impl->priv->file_system, file, name);
+      _gtk_file_system_set_bookmark_label (impl->file_system, file, name);
     }
   else
     error_adding_bookmark_dialog (impl, file, error);
@@ -3074,12 +3261,12 @@ shortcuts_selection_changed_cb (GtkTreeSelection      *selection,
   bookmarks_check_remove_sensitivity (impl);
   shortcuts_check_popup_sensitivity (impl);
 
-  if (impl->priv->changing_folder)
+  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->priv->shortcuts_pane_filter_model),
+      gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER 
(impl->shortcuts_pane_filter_model),
                                                        &child_iter,
                                                        &iter);
       shortcuts_activate_iter (impl, &child_iter);
@@ -3105,21 +3292,6 @@ shortcuts_key_press_event_after_cb (GtkWidget             *tree_view,
 {
   GtkWidget *entry;
 
-  /* Connect "after" to key-press-event on the shortcuts pane.  We want this action to be possible:
-   *
-   *   1. user brings up a SAVE dialog
-   *   2. user clicks on a shortcut in the shortcuts pane
-   *   3. user starts typing a filename
-   *
-   * Normally, the user's typing would be ignored, as the shortcuts treeview doesn't
-   * support interactive search.  However, we'd rather focus the location entry
-   * so that the user can type *there*.
-   *
-   * To preserve keyboard navigation in the shortcuts pane, we don't focus the
-   * filename entry if one clicks on a shortcut; rather, we focus the entry only
-   * if the user starts typing while the focus is in the shortcuts pane.
-   */
-
   /* don't screw up focus switching with Tab */
   if (event->keyval == GDK_KEY_Tab
       || event->keyval == GDK_KEY_KP_Tab
@@ -3127,10 +3299,10 @@ shortcuts_key_press_event_after_cb (GtkWidget             *tree_view,
       || event->length < 1)
     return FALSE;
 
-  if (impl->priv->location_entry)
-    entry = impl->priv->location_entry;
-  else if (impl->priv->search_entry)
-    entry = impl->priv->search_entry;
+  if (impl->location_entry)
+    entry = impl->location_entry;
+  else if (impl->search_entry)
+    entry = impl->search_entry;
   else
     entry = NULL;
 
@@ -3153,9 +3325,9 @@ shortcuts_popup_menu_detach_cb (GtkWidget *attach_widget,
   impl = g_object_get_data (G_OBJECT (attach_widget), "GtkFileChooserDefault");
   g_assert (GTK_IS_FILE_CHOOSER_DEFAULT (impl));
 
-  impl->priv->browse_shortcuts_popup_menu = NULL;
-  impl->priv->browse_shortcuts_popup_menu_remove_item = NULL;
-  impl->priv->browse_shortcuts_popup_menu_rename_item = NULL;
+  impl->browse_shortcuts_popup_menu = NULL;
+  impl->browse_shortcuts_popup_menu_remove_item = NULL;
+  impl->browse_shortcuts_popup_menu_rename_item = NULL;
 }
 
 static void
@@ -3177,13 +3349,13 @@ rename_selected_bookmark (GtkFileChooserDefault *impl)
 
   if (shortcuts_get_selected (impl, &iter))
     {
-      path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter);
-      column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view), 0);
+      path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->shortcuts_model), &iter);
+      column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), 0);
       renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
       cell = g_list_nth_data (renderers, 1);
       g_list_free (renderers);
       g_object_set (cell, "editable", TRUE, NULL);
-      gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
+      gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
                                        path, column, cell, TRUE);
       gtk_tree_path_free (path);
     }
@@ -3202,29 +3374,29 @@ shortcuts_build_popup_menu (GtkFileChooserDefault *impl)
 {
   GtkWidget *item;
 
-  if (impl->priv->browse_shortcuts_popup_menu)
+  if (impl->browse_shortcuts_popup_menu)
     return;
 
-  impl->priv->browse_shortcuts_popup_menu = gtk_menu_new ();
-  gtk_menu_attach_to_widget (GTK_MENU (impl->priv->browse_shortcuts_popup_menu),
-                            impl->priv->browse_shortcuts_tree_view,
+  impl->browse_shortcuts_popup_menu = gtk_menu_new ();
+  gtk_menu_attach_to_widget (GTK_MENU (impl->browse_shortcuts_popup_menu),
+                            impl->browse_shortcuts_tree_view,
                             shortcuts_popup_menu_detach_cb);
 
   item = gtk_image_menu_item_new_with_label (_("Remove"));
-  impl->priv->browse_shortcuts_popup_menu_remove_item = item;
+  impl->browse_shortcuts_popup_menu_remove_item = item;
   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item),
                                 gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU));
   g_signal_connect (item, "activate",
                    G_CALLBACK (remove_shortcut_cb), impl);
   gtk_widget_show (item);
-  gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_shortcuts_popup_menu), item);
+  gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_shortcuts_popup_menu), item);
 
   item = gtk_menu_item_new_with_label (_("Rename…"));
-  impl->priv->browse_shortcuts_popup_menu_rename_item = item;
+  impl->browse_shortcuts_popup_menu_rename_item = item;
   g_signal_connect (item, "activate",
                    G_CALLBACK (rename_shortcut_cb), impl);
   gtk_widget_show (item);
-  gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_shortcuts_popup_menu), item);
+  gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_shortcuts_popup_menu), item);
 }
 
 static void
@@ -3247,16 +3419,16 @@ shortcuts_popup_menu (GtkFileChooserDefault *impl,
 {
   shortcuts_update_popup_menu (impl);
   if (event)
-    gtk_menu_popup (GTK_MENU (impl->priv->browse_shortcuts_popup_menu),
+    gtk_menu_popup (GTK_MENU (impl->browse_shortcuts_popup_menu),
                    NULL, NULL, NULL, NULL,
                    event->button, event->time);
   else
     {
-      gtk_menu_popup (GTK_MENU (impl->priv->browse_shortcuts_popup_menu),
+      gtk_menu_popup (GTK_MENU (impl->browse_shortcuts_popup_menu),
                      NULL, NULL,
-                     popup_position_func, impl->priv->browse_shortcuts_tree_view,
+                     popup_position_func, impl->browse_shortcuts_tree_view,
                      0, GDK_CURRENT_TIME);
-      gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->priv->browse_shortcuts_popup_menu),
+      gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->browse_shortcuts_popup_menu),
                                   FALSE);
     }
 }
@@ -3288,7 +3460,7 @@ shortcuts_button_press_event_cb (GtkWidget             *widget,
     return FALSE;
 
   in_press = TRUE;
-  handled = gtk_widget_event (impl->priv->browse_shortcuts_tree_view, (GdkEvent *) event);
+  handled = gtk_widget_event (impl->browse_shortcuts_tree_view, (GdkEvent *) event);
   in_press = FALSE;
 
   if (!handled)
@@ -3311,15 +3483,15 @@ shortcuts_edited (GtkCellRenderer       *cell,
   g_object_set (cell, "editable", FALSE, NULL);
 
   path = gtk_tree_path_new_from_string (path_string);
-  if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, path))
+  if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->shortcuts_model), &iter, path))
     g_assert_not_reached ();
 
-  gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+  gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                      SHORTCUTS_COL_DATA, &shortcut,
                      -1);
   gtk_tree_path_free (path);
   
-  _gtk_file_system_set_bookmark_label (impl->priv->file_system, shortcut, new_text);
+  _gtk_file_system_set_bookmark_label (impl->file_system, shortcut, new_text);
 }
 
 static void
@@ -3329,29 +3501,237 @@ shortcuts_editing_canceled (GtkCellRenderer       *cell,
   g_object_set (cell, "editable", FALSE, NULL);
 }
 
-static gboolean
-key_is_left_or_right (GdkEventKey *event)
+/* Creates the widgets for the shortcuts and bookmarks tree */
+static GtkWidget *
+shortcuts_list_create (GtkFileChooserDefault *impl)
 {
-  guint modifiers;
+  GtkWidget *swin;
+  GtkTreeSelection *selection;
+  GtkTreeViewColumn *column;
+  GtkCellRenderer *renderer;
 
-  modifiers = gtk_accelerator_get_default_mod_mask ();
+  /* Target types for dragging a row to/from the shortcuts list */
+  const GtkTargetEntry tree_model_row_targets[] = {
+    { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, GTK_TREE_MODEL_ROW }
+  };
 
-  return ((event->keyval == GDK_KEY_Right
-          || event->keyval == GDK_KEY_KP_Right
-          || event->keyval == GDK_KEY_Left
-          || event->keyval == GDK_KEY_KP_Left)
-         && (event->state & modifiers) == 0);
-}
+  /* Scrolled window */
 
-/* Handles key press events on the file list, so that we can trap Enter to
- * activate the default button on our own.  Also, checks to see if '/' has been
- * pressed.
- */
-static gboolean
-browse_files_key_press_event_cb (GtkWidget   *widget,
-                                GdkEventKey *event,
-                                gpointer     data)
-{
+  swin = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
+                                 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swin),
+                                      GTK_SHADOW_IN);
+  gtk_widget_show (swin);
+
+  /* Tree */
+  impl->browse_shortcuts_tree_view = gtk_tree_view_new ();
+  gtk_style_context_add_class (gtk_widget_get_style_context (impl->browse_shortcuts_tree_view),
+                               GTK_STYLE_CLASS_SIDEBAR);
+  gtk_tree_view_set_enable_search (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), FALSE);
+#ifdef PROFILE_FILE_CHOOSER
+  g_object_set_data (G_OBJECT (impl->browse_shortcuts_tree_view), "fmq-name", "shortcuts");
+#endif
+
+  /* Connect "after" to key-press-event on the shortcuts pane.  We want this action to be possible:
+   *
+   *   1. user brings up a SAVE dialog
+   *   2. user clicks on a shortcut in the shortcuts pane
+   *   3. user starts typing a filename
+   *
+   * Normally, the user's typing would be ignored, as the shortcuts treeview doesn't
+   * support interactive search.  However, we'd rather focus the location entry
+   * so that the user can type *there*.
+   *
+   * To preserve keyboard navigation in the shortcuts pane, we don't focus the
+   * filename entry if one clicks on a shortcut; rather, we focus the entry only
+   * if the user starts typing while the focus is in the shortcuts pane.
+   */
+  g_signal_connect_after (impl->browse_shortcuts_tree_view, "key-press-event",
+                         G_CALLBACK (shortcuts_key_press_event_after_cb), impl);
+
+  g_signal_connect (impl->browse_shortcuts_tree_view, "popup-menu",
+                   G_CALLBACK (shortcuts_popup_menu_cb), impl);
+  g_signal_connect (impl->browse_shortcuts_tree_view, "button-press-event",
+                   G_CALLBACK (shortcuts_button_press_event_cb), impl);
+  /* Accessible object name for the file chooser's shortcuts pane */
+  atk_object_set_name (gtk_widget_get_accessible (impl->browse_shortcuts_tree_view), _("Places"));
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), 
impl->shortcuts_pane_filter_model);
+
+  gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
+                                         GDK_BUTTON1_MASK,
+                                         tree_model_row_targets,
+                                         G_N_ELEMENTS (tree_model_row_targets),
+                                         GDK_ACTION_MOVE);
+
+  gtk_drag_dest_set (impl->browse_shortcuts_tree_view,
+                    GTK_DEST_DEFAULT_ALL,
+                    tree_model_row_targets,
+                    G_N_ELEMENTS (tree_model_row_targets),
+                    GDK_ACTION_COPY | GDK_ACTION_MOVE);
+  gtk_drag_dest_add_uri_targets (impl->browse_shortcuts_tree_view);
+
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
+  gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+  gtk_tree_selection_set_select_function (selection,
+                                         shortcuts_select_func,
+                                         impl, NULL);
+
+  g_signal_connect (selection, "changed",
+                   G_CALLBACK (shortcuts_selection_changed_cb), impl);
+
+  g_signal_connect (impl->browse_shortcuts_tree_view, "key-press-event",
+                   G_CALLBACK (shortcuts_key_press_event_cb), impl);
+
+  g_signal_connect (impl->browse_shortcuts_tree_view, "drag-begin",
+                   G_CALLBACK (shortcuts_drag_begin_cb), impl);
+  g_signal_connect (impl->browse_shortcuts_tree_view, "drag-end",
+                   G_CALLBACK (shortcuts_drag_end_cb), impl);
+  g_signal_connect (impl->browse_shortcuts_tree_view, "drag-data-delete",
+                   G_CALLBACK (shortcuts_drag_data_delete_cb), impl);
+
+  g_signal_connect (impl->browse_shortcuts_tree_view, "drag-leave",
+                   G_CALLBACK (shortcuts_drag_leave_cb), impl);
+  g_signal_connect (impl->browse_shortcuts_tree_view, "drag-motion",
+                   G_CALLBACK (shortcuts_drag_motion_cb), impl);
+  g_signal_connect (impl->browse_shortcuts_tree_view, "drag-drop",
+                   G_CALLBACK (shortcuts_drag_drop_cb), impl);
+  g_signal_connect (impl->browse_shortcuts_tree_view, "drag-data-received",
+                   G_CALLBACK (shortcuts_drag_data_received_cb), impl);
+
+  /* Support tooltips */
+  gtk_widget_set_has_tooltip (impl->browse_shortcuts_tree_view, TRUE);
+  g_signal_connect (impl->browse_shortcuts_tree_view, "query-tooltip",
+                   G_CALLBACK (shortcuts_query_tooltip_cb), impl);
+
+  gtk_container_add (GTK_CONTAINER (swin), impl->browse_shortcuts_tree_view);
+  gtk_widget_show (impl->browse_shortcuts_tree_view);
+
+  /* Column */
+
+  column = gtk_tree_view_column_new ();
+  /* Column header for the file chooser's shortcuts pane */
+  gtk_tree_view_column_set_title (column, _("_Places"));
+
+  renderer = gtk_cell_renderer_pixbuf_new ();
+  gtk_tree_view_column_pack_start (column, renderer, FALSE);
+  gtk_tree_view_column_set_attributes (column, renderer,
+                                      "pixbuf", SHORTCUTS_COL_PIXBUF,
+                                      "visible", SHORTCUTS_COL_PIXBUF_VISIBLE,
+                                      NULL);
+
+  renderer = gtk_cell_renderer_text_new ();
+  g_object_set (renderer,
+                "width-chars", 12,
+                "ellipsize", PANGO_ELLIPSIZE_END,
+                NULL);
+  g_signal_connect (renderer, "edited",
+                   G_CALLBACK (shortcuts_edited), impl);
+  g_signal_connect (renderer, "editing-canceled",
+                   G_CALLBACK (shortcuts_editing_canceled), impl);
+  gtk_tree_view_column_pack_start (column, renderer, TRUE);
+  gtk_tree_view_column_set_attributes (column, renderer,
+                                      "text", SHORTCUTS_COL_NAME,
+                                      NULL);
+
+  gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
+                                       shortcuts_row_separator_func,
+                                       NULL, NULL);
+
+  gtk_tree_view_append_column (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), column);
+
+  return swin;
+}
+
+/* Creates the widgets for the shortcuts/bookmarks pane */
+static GtkWidget *
+shortcuts_pane_create (GtkFileChooserDefault *impl,
+                      GtkSizeGroup          *size_group)
+{
+  GtkWidget *vbox;
+  GtkWidget *toolbar;
+  GtkWidget *widget;
+  GtkStyleContext *context;
+  GIcon *icon;
+
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+  gtk_widget_show (vbox);
+
+  /* Shortcuts tree */
+
+  widget = shortcuts_list_create (impl);
+
+  gtk_size_group_add_widget (size_group, widget);
+  context = gtk_widget_get_style_context (widget);
+  gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM);
+
+  gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0);
+
+  /* Box for buttons */
+
+  toolbar = gtk_toolbar_new ();
+  gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS);
+  gtk_toolbar_set_icon_size (GTK_TOOLBAR (toolbar), GTK_ICON_SIZE_MENU);
+
+  context = gtk_widget_get_style_context (toolbar);
+  gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
+  gtk_style_context_add_class (context, GTK_STYLE_CLASS_INLINE_TOOLBAR);
+  
+  gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
+  gtk_widget_show (toolbar);
+
+  /* Add bookmark button */
+  icon = g_themed_icon_new_with_default_fallbacks ("list-add-symbolic");
+  impl->browse_shortcuts_add_button = toolbutton_new (impl,
+                                                      icon,
+                                                      FALSE,
+                                                      TRUE,
+                                                      G_CALLBACK (add_bookmark_button_clicked_cb));
+  g_object_unref (icon);
+
+  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (impl->browse_shortcuts_add_button), 0);
+  gtk_widget_set_tooltip_text (impl->browse_shortcuts_add_button,
+                               _("Add the selected folder to the Bookmarks"));
+
+  /* Remove bookmark button */
+  icon = g_themed_icon_new_with_default_fallbacks ("list-remove-symbolic");
+  impl->browse_shortcuts_remove_button = toolbutton_new (impl,
+                                                         icon,
+                                                         FALSE,
+                                                         TRUE,
+                                                         G_CALLBACK (remove_bookmark_button_clicked_cb));
+  g_object_unref (icon);
+  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (impl->browse_shortcuts_remove_button), 1);
+  gtk_widget_set_tooltip_text (impl->browse_shortcuts_remove_button,
+                               _("Remove the selected bookmark"));
+
+  return vbox;
+}
+
+static gboolean
+key_is_left_or_right (GdkEventKey *event)
+{
+  guint modifiers;
+
+  modifiers = gtk_accelerator_get_default_mod_mask ();
+
+  return ((event->keyval == GDK_KEY_Right
+          || event->keyval == GDK_KEY_KP_Right
+          || event->keyval == GDK_KEY_Left
+          || event->keyval == GDK_KEY_KP_Left)
+         && (event->state & modifiers) == 0);
+}
+
+/* Handles key press events on the file list, so that we can trap Enter to
+ * activate the default button on our own.  Also, checks to see if '/' has been
+ * pressed.
+ */
+static gboolean
+browse_files_key_press_event_cb (GtkWidget   *widget,
+                                GdkEventKey *event,
+                                gpointer     data)
+{
   GtkFileChooserDefault *impl;
   GdkModifierType no_text_input_mask;
 
@@ -3373,7 +3753,7 @@ browse_files_key_press_event_cb (GtkWidget   *widget,
 
   if (key_is_left_or_right (event))
     {
-      gtk_widget_grab_focus (impl->priv->browse_shortcuts_tree_view);
+      gtk_widget_grab_focus (impl->browse_shortcuts_tree_view);
       return TRUE;
     }
 
@@ -3383,8 +3763,8 @@ browse_files_key_press_event_cb (GtkWidget   *widget,
        || event->keyval == GDK_KEY_space
        || event->keyval == GDK_KEY_KP_Space)
       && !(event->state & gtk_accelerator_get_default_mod_mask ())
-      && !(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
-          impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
+      && !(impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
+          impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
     {
       GtkWindow *window;
 
@@ -3419,10 +3799,10 @@ popup_menu_detach_cb (GtkWidget *attach_widget,
   impl = g_object_get_data (G_OBJECT (attach_widget), "GtkFileChooserDefault");
   g_assert (GTK_IS_FILE_CHOOSER_DEFAULT (impl));
 
-  impl->priv->browse_files_popup_menu = NULL;
-  impl->priv->browse_files_popup_menu_add_shortcut_item = NULL;
-  impl->priv->browse_files_popup_menu_hidden_files_item = NULL;
-  impl->priv->browse_files_popup_menu_copy_file_location_item = NULL;
+  impl->browse_files_popup_menu = NULL;
+  impl->browse_files_popup_menu_add_shortcut_item = NULL;
+  impl->browse_files_popup_menu_hidden_files_item = NULL;
+  impl->browse_files_popup_menu_copy_file_location_item = NULL;
 }
 
 /* Callback used when the "Add to Bookmarks" menu item is activated */
@@ -3560,10 +3940,10 @@ static void
 show_size_column_toggled_cb (GtkCheckMenuItem *item,
                              GtkFileChooserDefault *impl)
 {
-  impl->priv->show_size_column = gtk_check_menu_item_get_active (item);
+  impl->show_size_column = gtk_check_menu_item_get_active (item);
 
-  gtk_tree_view_column_set_visible (impl->priv->list_size_column,
-                                    impl->priv->show_size_column);
+  gtk_tree_view_column_set_visible (impl->list_size_column,
+                                    impl->show_size_column);
 }
 
 /* Shows an error dialog about not being able to select a dragged file */
@@ -3618,16 +3998,16 @@ file_list_drag_data_received_get_info_cb (GCancellable *cancellable,
   struct FileListDragData *data = user_data;
   GtkFileChooser *chooser = GTK_FILE_CHOOSER (data->impl);
 
-  if (cancellable != data->impl->priv->file_list_drag_data_received_cancellable)
+  if (cancellable != data->impl->file_list_drag_data_received_cancellable)
     goto out;
 
-  data->impl->priv->file_list_drag_data_received_cancellable = NULL;
+  data->impl->file_list_drag_data_received_cancellable = NULL;
 
   if (cancelled || error)
     goto out;
 
-  if ((data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-       data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE) &&
+  if ((data->impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+       data->impl->action == GTK_FILE_CHOOSER_ACTION_SAVE) &&
       data->uris[1] == 0 && !error && _gtk_file_info_consider_as_directory (info))
     change_folder_and_display_error (data->impl, data->file, FALSE);
   else
@@ -3642,7 +4022,7 @@ file_list_drag_data_received_get_info_cb (GCancellable *cancellable,
        browse_files_center_selected_row (data->impl);
     }
 
-  if (data->impl->priv->select_multiple)
+  if (data->impl->select_multiple)
     file_list_drag_data_select_uris (data->impl, data->uris);
 
 out:
@@ -3692,11 +4072,11 @@ file_list_drag_data_received_cb (GtkWidget        *widget,
       data->uris = uris;
       data->file = file;
 
-      if (impl->priv->file_list_drag_data_received_cancellable)
-        g_cancellable_cancel (impl->priv->file_list_drag_data_received_cancellable);
+      if (impl->file_list_drag_data_received_cancellable)
+        g_cancellable_cancel (impl->file_list_drag_data_received_cancellable);
 
-      impl->priv->file_list_drag_data_received_cancellable =
-        _gtk_file_system_get_info (impl->priv->file_system, file,
+      impl->file_list_drag_data_received_cancellable =
+        _gtk_file_system_get_info (impl->file_system, file,
                                    "standard::type",
                                    file_list_drag_data_received_get_info_cb,
                                    data);
@@ -3741,14 +4121,14 @@ check_copy_file_location_sensitivity (GtkFileChooserDefault *impl)
   GtkTreeSelection *selection;
   gboolean active;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   if (gtk_tree_selection_count_selected_rows (selection) == 0)
     active = FALSE;
   else
     active = TRUE;
 
-  if (impl->priv->browse_files_popup_menu_copy_file_location_item)
-    gtk_widget_set_sensitive (impl->priv->browse_files_popup_menu_copy_file_location_item, active);
+  if (impl->browse_files_popup_menu_copy_file_location_item)
+    gtk_widget_set_sensitive (impl->browse_files_popup_menu_copy_file_location_item, active);
 }
 
 static GtkWidget *
@@ -3764,7 +4144,7 @@ file_list_add_image_menu_item (GtkFileChooserDefault *impl,
                                  gtk_image_new_from_stock (stock_name, GTK_ICON_SIZE_MENU));
   g_signal_connect (item, "activate", callback, impl);
   gtk_widget_show (item);
-  gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_files_popup_menu), item);
+  gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_files_popup_menu), item);
   
   return item;
 }
@@ -3779,7 +4159,7 @@ file_list_add_check_menu_item (GtkFileChooserDefault *impl,
   item = gtk_check_menu_item_new_with_mnemonic (mnemonic_label);
   g_signal_connect (item, "toggled", callback, impl);
   gtk_widget_show (item);
-  gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_files_popup_menu), item);
+  gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_files_popup_menu), item);
 
   return item;
 }
@@ -3790,31 +4170,31 @@ file_list_build_popup_menu (GtkFileChooserDefault *impl)
 {
   GtkWidget *item;
 
-  if (impl->priv->browse_files_popup_menu)
+  if (impl->browse_files_popup_menu)
     return;
 
-  impl->priv->browse_files_popup_menu = gtk_menu_new ();
-  gtk_menu_attach_to_widget (GTK_MENU (impl->priv->browse_files_popup_menu),
-                            impl->priv->browse_files_tree_view,
+  impl->browse_files_popup_menu = gtk_menu_new ();
+  gtk_menu_attach_to_widget (GTK_MENU (impl->browse_files_popup_menu),
+                            impl->browse_files_tree_view,
                             popup_menu_detach_cb);
 
-  impl->priv->browse_files_popup_menu_visit_file_item          = file_list_add_image_menu_item (impl, 
GTK_STOCK_DIRECTORY, _("_Visit this file"),
+  impl->browse_files_popup_menu_visit_file_item                = file_list_add_image_menu_item (impl, 
GTK_STOCK_DIRECTORY, _("_Visit this file"),
                                                                                         G_CALLBACK 
(visit_file_cb));
 
-  impl->priv->browse_files_popup_menu_copy_file_location_item  = file_list_add_image_menu_item (impl, 
GTK_STOCK_COPY, _("_Copy file’s location"),
+  impl->browse_files_popup_menu_copy_file_location_item        = file_list_add_image_menu_item (impl, 
GTK_STOCK_COPY, _("_Copy file’s location"),
                                                                                         G_CALLBACK 
(copy_file_location_cb));
 
-  impl->priv->browse_files_popup_menu_add_shortcut_item        = file_list_add_image_menu_item (impl, 
GTK_STOCK_ADD, _("_Add to Bookmarks"),
+  impl->browse_files_popup_menu_add_shortcut_item      = file_list_add_image_menu_item (impl, GTK_STOCK_ADD, 
_("_Add to Bookmarks"),
                                                                                         G_CALLBACK 
(add_to_shortcuts_cb));
 
   item = gtk_separator_menu_item_new ();
   gtk_widget_show (item);
-  gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_files_popup_menu), item);
+  gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_files_popup_menu), item);
 
-  impl->priv->browse_files_popup_menu_hidden_files_item        = file_list_add_check_menu_item (impl, 
_("Show _Hidden Files"),
+  impl->browse_files_popup_menu_hidden_files_item      = file_list_add_check_menu_item (impl, _("Show 
_Hidden Files"),
                                                                                         G_CALLBACK 
(show_hidden_toggled_cb));
 
-  impl->priv->browse_files_popup_menu_size_column_item = file_list_add_check_menu_item (impl, _("Show _Size 
Column"),
+  impl->browse_files_popup_menu_size_column_item       = file_list_add_check_menu_item (impl, _("Show _Size 
Column"),
                                                                                         G_CALLBACK 
(show_size_column_toggled_cb));
 
   bookmarks_check_add_sensitivity (impl);
@@ -3832,22 +4212,22 @@ file_list_update_popup_menu (GtkFileChooserDefault *impl)
    */
 
   /* 'Visit this file' */
-  gtk_widget_set_visible (impl->priv->browse_files_popup_menu_visit_file_item, (impl->priv->operation_mode 
!= OPERATION_MODE_BROWSE));
+  gtk_widget_set_visible (impl->browse_files_popup_menu_visit_file_item, (impl->operation_mode != 
OPERATION_MODE_BROWSE));
 
   /* 'Show Hidden Files' */
-  g_signal_handlers_block_by_func (impl->priv->browse_files_popup_menu_hidden_files_item,
+  g_signal_handlers_block_by_func (impl->browse_files_popup_menu_hidden_files_item,
                                   G_CALLBACK (show_hidden_toggled_cb), impl);
-  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM 
(impl->priv->browse_files_popup_menu_hidden_files_item),
-                                 impl->priv->show_hidden);
-  g_signal_handlers_unblock_by_func (impl->priv->browse_files_popup_menu_hidden_files_item,
+  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (impl->browse_files_popup_menu_hidden_files_item),
+                                 impl->show_hidden);
+  g_signal_handlers_unblock_by_func (impl->browse_files_popup_menu_hidden_files_item,
                                     G_CALLBACK (show_hidden_toggled_cb), impl);
 
   /* 'Show Size Column' */
-  g_signal_handlers_block_by_func (impl->priv->browse_files_popup_menu_size_column_item,
+  g_signal_handlers_block_by_func (impl->browse_files_popup_menu_size_column_item,
                                   G_CALLBACK (show_size_column_toggled_cb), impl);
-  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (impl->priv->browse_files_popup_menu_size_column_item),
-                                 impl->priv->show_size_column);
-  g_signal_handlers_unblock_by_func (impl->priv->browse_files_popup_menu_size_column_item,
+  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (impl->browse_files_popup_menu_size_column_item),
+                                 impl->show_size_column);
+  g_signal_handlers_unblock_by_func (impl->browse_files_popup_menu_size_column_item,
                                     G_CALLBACK (show_size_column_toggled_cb), impl);
 }
 
@@ -3892,16 +4272,16 @@ file_list_popup_menu (GtkFileChooserDefault *impl,
 {
   file_list_update_popup_menu (impl);
   if (event)
-    gtk_menu_popup (GTK_MENU (impl->priv->browse_files_popup_menu),
+    gtk_menu_popup (GTK_MENU (impl->browse_files_popup_menu),
                    NULL, NULL, NULL, NULL,
                    event->button, event->time);
   else
     {
-      gtk_menu_popup (GTK_MENU (impl->priv->browse_files_popup_menu),
+      gtk_menu_popup (GTK_MENU (impl->browse_files_popup_menu),
                      NULL, NULL,
-                     popup_position_func, impl->priv->browse_files_tree_view,
+                     popup_position_func, impl->browse_files_tree_view,
                      0, GDK_CURRENT_TIME);
-      gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->priv->browse_files_popup_menu),
+      gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->browse_files_popup_menu),
                                   FALSE);
     }
 
@@ -3933,7 +4313,7 @@ list_button_press_event_cb (GtkWidget             *widget,
     return FALSE;
 
   in_press = TRUE;
-  gtk_widget_event (impl->priv->browse_files_tree_view, (GdkEvent *) event);
+  gtk_widget_event (impl->browse_files_tree_view, (GdkEvent *) event);
   in_press = FALSE;
 
   file_list_popup_menu (impl, event);
@@ -3952,9 +4332,9 @@ typedef struct {
 static void
 file_list_set_sort_column_ids (GtkFileChooserDefault *impl)
 {
-  gtk_tree_view_column_set_sort_column_id (impl->priv->list_name_column, MODEL_COL_NAME);
-  gtk_tree_view_column_set_sort_column_id (impl->priv->list_mtime_column, MODEL_COL_MTIME);
-  gtk_tree_view_column_set_sort_column_id (impl->priv->list_size_column, MODEL_COL_SIZE);
+  gtk_tree_view_column_set_sort_column_id (impl->list_name_column, MODEL_COL_NAME);
+  gtk_tree_view_column_set_sort_column_id (impl->list_mtime_column, MODEL_COL_MTIME);
+  gtk_tree_view_column_set_sort_column_id (impl->list_size_column, MODEL_COL_SIZE);
 }
 
 static gboolean
@@ -3972,11 +4352,11 @@ file_list_query_tooltip_cb (GtkWidget  *widget,
   GFile *file;
   gchar *filename;
 
-  if (impl->priv->operation_mode == OPERATION_MODE_BROWSE)
+  if (impl->operation_mode == OPERATION_MODE_BROWSE)
     return FALSE;
 
 
-  if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+  if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (impl->browse_files_tree_view),
                                           &x, &y,
                                           keyboard_tip,
                                           &model, &path, &iter))
@@ -3994,7 +4374,7 @@ file_list_query_tooltip_cb (GtkWidget  *widget,
 
   filename = g_file_get_path (file);
   gtk_tooltip_set_text (tooltip, filename);
-  gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+  gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (impl->browse_files_tree_view),
                                  tooltip,
                                  path);
 
@@ -4006,26 +4386,196 @@ file_list_query_tooltip_cb (GtkWidget  *widget,
 }
 
 static void
-set_icon_cell_renderer_fixed_size (GtkFileChooserDefault *impl)
+set_icon_cell_renderer_fixed_size (GtkFileChooserDefault *impl, GtkCellRenderer *renderer)
 {
   gint xpad, ypad;
 
-  gtk_cell_renderer_get_padding (impl->priv->list_pixbuf_renderer, &xpad, &ypad);
-  gtk_cell_renderer_set_fixed_size (impl->priv->list_pixbuf_renderer, 
-                                    xpad * 2 + impl->priv->icon_size,
-                                    ypad * 2 + impl->priv->icon_size);
+  gtk_cell_renderer_get_padding (renderer, &xpad, &ypad);
+  gtk_cell_renderer_set_fixed_size (renderer, 
+                                    xpad * 2 + impl->icon_size,
+                                    ypad * 2 + impl->icon_size);
+}
+
+/* Creates the widgets for the file list */
+static GtkWidget *
+create_file_list (GtkFileChooserDefault *impl)
+{
+  GtkWidget *swin;
+  GtkTreeSelection *selection;
+  GtkTreeViewColumn *column;
+  GtkCellRenderer *renderer;
+
+  /* Scrolled window */
+  swin = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
+                                 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swin),
+                                      GTK_SHADOW_IN);
+
+  /* Tree/list view */
+
+  impl->browse_files_tree_view = gtk_tree_view_new ();
+#ifdef PROFILE_FILE_CHOOSER
+  g_object_set_data (G_OBJECT (impl->browse_files_tree_view), "fmq-name", "file_list");
+#endif
+  g_object_set_data (G_OBJECT (impl->browse_files_tree_view), I_("GtkFileChooserDefault"), impl);
+  atk_object_set_name (gtk_widget_get_accessible (impl->browse_files_tree_view), _("Files"));
+
+  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (impl->browse_files_tree_view), TRUE);
+  gtk_container_add (GTK_CONTAINER (swin), impl->browse_files_tree_view);
+
+  gtk_drag_dest_set (impl->browse_files_tree_view,
+                     GTK_DEST_DEFAULT_ALL,
+                     NULL, 0,
+                     GDK_ACTION_COPY | GDK_ACTION_MOVE);
+  gtk_drag_dest_add_uri_targets (impl->browse_files_tree_view);
+  
+  g_signal_connect (impl->browse_files_tree_view, "row-activated",
+                   G_CALLBACK (list_row_activated), impl);
+  g_signal_connect (impl->browse_files_tree_view, "key-press-event",
+                   G_CALLBACK (browse_files_key_press_event_cb), impl);
+  g_signal_connect (impl->browse_files_tree_view, "popup-menu",
+                   G_CALLBACK (list_popup_menu_cb), impl);
+  g_signal_connect (impl->browse_files_tree_view, "button-press-event",
+                   G_CALLBACK (list_button_press_event_cb), impl);
+
+  g_signal_connect (impl->browse_files_tree_view, "drag-data-received",
+                    G_CALLBACK (file_list_drag_data_received_cb), impl);
+  g_signal_connect (impl->browse_files_tree_view, "drag-drop",
+                    G_CALLBACK (file_list_drag_drop_cb), impl);
+  g_signal_connect (impl->browse_files_tree_view, "drag-motion",
+                    G_CALLBACK (file_list_drag_motion_cb), impl);
+
+  g_object_set (impl->browse_files_tree_view, "has-tooltip", TRUE, NULL);
+  g_signal_connect (impl->browse_files_tree_view, "query-tooltip",
+                    G_CALLBACK (file_list_query_tooltip_cb), impl);
+
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+  gtk_tree_selection_set_select_function (selection,
+                                         list_select_func,
+                                         impl, NULL);
+  gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (impl->browse_files_tree_view),
+                                         GDK_BUTTON1_MASK,
+                                         NULL, 0,
+                                         GDK_ACTION_COPY | GDK_ACTION_MOVE);
+  gtk_drag_source_add_uri_targets (impl->browse_files_tree_view);
+
+  g_signal_connect (selection, "changed",
+                   G_CALLBACK (list_selection_changed), impl);
+
+  /* Keep the column order in sync with update_cell_renderer_attributes() */
+
+  /* Filename column */
+
+  impl->list_name_column = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_expand (impl->list_name_column, TRUE);
+  gtk_tree_view_column_set_resizable (impl->list_name_column, TRUE);
+  gtk_tree_view_column_set_title (impl->list_name_column, _("Name"));
+
+  renderer = gtk_cell_renderer_pixbuf_new ();
+  /* We set a fixed size so that we get an empty slot even if no icons are loaded yet */
+  set_icon_cell_renderer_fixed_size (impl, renderer);
+  gtk_tree_view_column_pack_start (impl->list_name_column, renderer, FALSE);
+
+  impl->list_name_renderer = gtk_cell_renderer_text_new ();
+  g_object_set (impl->list_name_renderer,
+               "ellipsize", PANGO_ELLIPSIZE_END,
+               NULL);
+  g_signal_connect (impl->list_name_renderer, "edited",
+                   G_CALLBACK (renderer_edited_cb), impl);
+  g_signal_connect (impl->list_name_renderer, "editing-canceled",
+                   G_CALLBACK (renderer_editing_canceled_cb), impl);
+  gtk_tree_view_column_pack_start (impl->list_name_column, impl->list_name_renderer, TRUE);
+
+  gtk_tree_view_append_column (GTK_TREE_VIEW (impl->browse_files_tree_view), impl->list_name_column);
+
+  /* Size column */
+
+  column = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_resizable (column, TRUE);
+  gtk_tree_view_column_set_title (column, _("Size"));
+
+  renderer = gtk_cell_renderer_text_new ();
+  g_object_set (renderer, 
+                "alignment", PANGO_ALIGN_RIGHT,
+                NULL);
+  gtk_tree_view_column_pack_start (column, renderer, TRUE); /* bug: it doesn't expand */
+  gtk_tree_view_append_column (GTK_TREE_VIEW (impl->browse_files_tree_view), column);
+  impl->list_size_column = column;
+
+  /* Modification time column */
+
+  column = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_resizable (column, TRUE);
+  gtk_tree_view_column_set_title (column, _("Modified"));
+
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_column_pack_start (column, renderer, TRUE);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (impl->browse_files_tree_view), column);
+  impl->list_mtime_column = column;
+  
+  file_list_set_sort_column_ids (impl);
+  update_cell_renderer_attributes (impl);
+
+  gtk_widget_show_all (swin);
+
+  return swin;
+}
+
+/* Creates the widgets for the files/folders pane */
+static GtkWidget *
+file_pane_create (GtkFileChooserDefault *impl,
+                 GtkSizeGroup          *size_group)
+{
+  GtkWidget *vbox;
+  GtkWidget *hbox;
+  GtkWidget *widget;
+
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+  gtk_widget_show (vbox);
+
+  /* Box for lists and preview */
+
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, PREVIEW_HBOX_SPACING);
+  gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+  gtk_widget_show (hbox);
+
+  /* File list */
+
+  widget = create_file_list (impl);
+  gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
+  gtk_size_group_add_widget (size_group, widget);
+
+  /* Preview */
+
+  impl->preview_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+  gtk_box_pack_start (GTK_BOX (hbox), impl->preview_box, FALSE, FALSE, 0);
+  /* Don't show preview box initially */
+
+  /* Filter combo */
+
+  impl->filter_combo_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+
+  widget = filter_create (impl);
+
+  gtk_widget_show (widget);
+  gtk_box_pack_end (GTK_BOX (impl->filter_combo_hbox), widget, FALSE, FALSE, 0);
+
+  gtk_box_pack_end (GTK_BOX (vbox), impl->filter_combo_hbox, FALSE, FALSE, 0);
+
+  return vbox;
 }
 
 static void
 location_entry_create (GtkFileChooserDefault *impl)
 {
-  if (!impl->priv->location_entry)
-    impl->priv->location_entry = _gtk_file_chooser_entry_new (TRUE);
+  if (!impl->location_entry)
+    impl->location_entry = _gtk_file_chooser_entry_new (TRUE);
 
-  _gtk_file_chooser_entry_set_local_only (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry), 
impl->priv->local_only);
-  _gtk_file_chooser_entry_set_action (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry), 
impl->priv->action);
-  gtk_entry_set_width_chars (GTK_ENTRY (impl->priv->location_entry), 45);
-  gtk_entry_set_activates_default (GTK_ENTRY (impl->priv->location_entry), TRUE);
+  _gtk_file_chooser_entry_set_local_only (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), impl->local_only);
+  _gtk_file_chooser_entry_set_action (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), impl->action);
+  gtk_entry_set_width_chars (GTK_ENTRY (impl->location_entry), 45);
+  gtk_entry_set_activates_default (GTK_ENTRY (impl->location_entry), TRUE);
 }
 
 /* Creates the widgets specific to Save mode */
@@ -4035,60 +4585,60 @@ save_widgets_create (GtkFileChooserDefault *impl)
   GtkWidget *vbox;
   GtkWidget *widget;
 
-  if (impl->priv->save_widgets != NULL)
+  if (impl->save_widgets != NULL)
     return;
 
   location_switch_to_path_bar (impl);
 
   vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
 
-  impl->priv->save_widgets_table = gtk_grid_new ();
-  gtk_box_pack_start (GTK_BOX (vbox), impl->priv->save_widgets_table, FALSE, FALSE, 0);
-  gtk_widget_show (impl->priv->save_widgets_table);
-  gtk_grid_set_row_spacing (GTK_GRID (impl->priv->save_widgets_table), 12);
-  gtk_grid_set_column_spacing (GTK_GRID (impl->priv->save_widgets_table), 12);
+  impl->save_widgets_table = gtk_grid_new ();
+  gtk_box_pack_start (GTK_BOX (vbox), impl->save_widgets_table, FALSE, FALSE, 0);
+  gtk_widget_show (impl->save_widgets_table);
+  gtk_grid_set_row_spacing (GTK_GRID (impl->save_widgets_table), 12);
+  gtk_grid_set_column_spacing (GTK_GRID (impl->save_widgets_table), 12);
 
   /* Label */
 
   widget = gtk_label_new_with_mnemonic (_("_Name:"));
   gtk_widget_set_halign (widget, GTK_ALIGN_START);
   gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
-  gtk_grid_attach (GTK_GRID (impl->priv->save_widgets_table), widget, 0, 0, 1, 1);
+  gtk_grid_attach (GTK_GRID (impl->save_widgets_table), widget, 0, 0, 1, 1);
   gtk_widget_show (widget);
 
   /* Location entry */
 
   location_entry_create (impl);
-  gtk_widget_set_hexpand (impl->priv->location_entry, TRUE);
-  gtk_grid_attach (GTK_GRID (impl->priv->save_widgets_table), impl->priv->location_entry, 1, 0, 1, 1);
-  gtk_widget_show (impl->priv->location_entry);
-  gtk_label_set_mnemonic_widget (GTK_LABEL (widget), impl->priv->location_entry);
+  gtk_widget_set_hexpand (impl->location_entry, TRUE);
+  gtk_grid_attach (GTK_GRID (impl->save_widgets_table), impl->location_entry, 1, 0, 1, 1);
+  gtk_widget_show (impl->location_entry);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (widget), impl->location_entry);
 
   /* Folder combo */
-  impl->priv->save_folder_label = gtk_label_new (NULL);
-  gtk_widget_set_halign (impl->priv->save_folder_label, GTK_ALIGN_START);
-  gtk_widget_set_valign (impl->priv->save_folder_label, GTK_ALIGN_CENTER);
-  gtk_grid_attach (GTK_GRID (impl->priv->save_widgets_table), impl->priv->save_folder_label, 0, 1, 1, 1);
-  gtk_widget_show (impl->priv->save_folder_label);
+  impl->save_folder_label = gtk_label_new (NULL);
+  gtk_widget_set_halign (impl->save_folder_label, GTK_ALIGN_START);
+  gtk_widget_set_valign (impl->save_folder_label, GTK_ALIGN_CENTER);
+  gtk_grid_attach (GTK_GRID (impl->save_widgets_table), impl->save_folder_label, 0, 1, 1, 1);
+  gtk_widget_show (impl->save_folder_label);
 
-  impl->priv->save_widgets = vbox;
-  gtk_box_pack_start (GTK_BOX (impl), impl->priv->save_widgets, FALSE, FALSE, 0);
-  gtk_box_reorder_child (GTK_BOX (impl), impl->priv->save_widgets, 0);
-  gtk_widget_show (impl->priv->save_widgets);
+  impl->save_widgets = vbox;
+  gtk_box_pack_start (GTK_BOX (impl), impl->save_widgets, FALSE, FALSE, 0);
+  gtk_box_reorder_child (GTK_BOX (impl), impl->save_widgets, 0);
+  gtk_widget_show (impl->save_widgets);
 }
 
 /* Destroys the widgets specific to Save mode */
 static void
 save_widgets_destroy (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->save_widgets == NULL)
+  if (impl->save_widgets == NULL)
     return;
 
-  gtk_widget_destroy (impl->priv->save_widgets);
-  impl->priv->save_widgets = NULL;
-  impl->priv->save_widgets_table = NULL;
-  impl->priv->location_entry = NULL;
-  impl->priv->save_folder_label = NULL;
+  gtk_widget_destroy (impl->save_widgets);
+  impl->save_widgets = NULL;
+  impl->save_widgets_table = NULL;
+  impl->location_entry = NULL;
+  impl->save_folder_label = NULL;
 }
 
 /* Turns on the path bar widget.  Can be called even if we are already in that
@@ -4097,13 +4647,13 @@ save_widgets_destroy (GtkFileChooserDefault *impl)
 static void
 location_switch_to_path_bar (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->location_entry)
+  if (impl->location_entry)
     {
-      gtk_widget_destroy (impl->priv->location_entry);
-      impl->priv->location_entry = NULL;
+      gtk_widget_destroy (impl->location_entry);
+      impl->location_entry = NULL;
     }
 
-  gtk_widget_hide (impl->priv->location_entry_box);
+  gtk_widget_hide (impl->location_entry_box);
 }
 
 /* Turns on the location entry.  Can be called even if we are already in that
@@ -4116,31 +4666,31 @@ location_switch_to_filename_entry (GtkFileChooserDefault *impl)
    * location_entry_box container, so there's no point in switching
    * to it.
    */
-  if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
-      impl->priv->operation_mode == OPERATION_MODE_RECENT)
+  if (impl->operation_mode == OPERATION_MODE_SEARCH ||
+      impl->operation_mode == OPERATION_MODE_RECENT)
     return;
 
   /* Box */
 
-  gtk_widget_show (impl->priv->location_entry_box);
+  gtk_widget_show (impl->location_entry_box);
 
   /* Entry */
 
-  if (!impl->priv->location_entry)
+  if (!impl->location_entry)
     {
       location_entry_create (impl);
-      gtk_box_pack_start (GTK_BOX (impl->priv->location_entry_box), impl->priv->location_entry, TRUE, TRUE, 
0);
-      gtk_label_set_mnemonic_widget (GTK_LABEL (impl->priv->location_label), impl->priv->location_entry);
+      gtk_box_pack_start (GTK_BOX (impl->location_entry_box), impl->location_entry, TRUE, TRUE, 0);
+      gtk_label_set_mnemonic_widget (GTK_LABEL (impl->location_label), impl->location_entry);
     }
 
   /* Configure the entry */
 
-  _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry), 
impl->priv->current_folder);
+  _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), 
impl->current_folder);
 
   /* Done */
 
-  gtk_widget_show (impl->priv->location_entry);
-  gtk_widget_grab_focus (impl->priv->location_entry);
+  gtk_widget_show (impl->location_entry);
+  gtk_widget_grab_focus (impl->location_entry);
 }
 
 /* Sets a new location mode.  set_buttons determines whether the toggle button
@@ -4151,8 +4701,8 @@ location_mode_set (GtkFileChooserDefault *impl,
                   LocationMode new_mode,
                   gboolean set_button)
 {
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
       GtkWindow *toplevel;
       GtkWidget *current_focus;
@@ -4173,14 +4723,14 @@ location_mode_set (GtkFileChooserDefault *impl,
          if (toplevel)
            {
              current_focus = gtk_window_get_focus (toplevel);
-             if (!current_focus || current_focus == impl->priv->location_entry)
+             if (!current_focus || current_focus == impl->location_entry)
                switch_to_file_list = TRUE;
            }
 
          location_switch_to_path_bar (impl);
 
          if (switch_to_file_list)
-           gtk_widget_grab_focus (impl->priv->browse_files_tree_view);
+           gtk_widget_grab_focus (impl->browse_files_tree_view);
 
          break;
 
@@ -4196,17 +4746,17 @@ location_mode_set (GtkFileChooserDefault *impl,
 
       if (set_button)
        {
-         g_signal_handlers_block_by_func (impl->priv->location_button,
+         g_signal_handlers_block_by_func (impl->location_button,
                                           G_CALLBACK (location_button_toggled_cb), impl);
 
-         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->priv->location_button), button_active);
+         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->location_button), button_active);
 
-         g_signal_handlers_unblock_by_func (impl->priv->location_button,
+         g_signal_handlers_unblock_by_func (impl->location_button,
                                             G_CALLBACK (location_button_toggled_cb), impl);
        }
     }
 
-  impl->priv->location_mode = new_mode;
+  impl->location_mode = new_mode;
 }
 
 static void
@@ -4216,26 +4766,26 @@ location_toggle_popup_handler (GtkFileChooserDefault *impl)
    * location_entry_box container, so there's no point in switching
    * to it.
    */
-  if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
-      impl->priv->operation_mode == OPERATION_MODE_RECENT)
+  if (impl->operation_mode == OPERATION_MODE_SEARCH ||
+      impl->operation_mode == OPERATION_MODE_RECENT)
     return;
 
   /* If the file entry is not visible, show it.
    * If it is visible, turn it off only if it is focused.  Otherwise, switch to the entry.
    */
-  if (impl->priv->location_mode == LOCATION_MODE_PATH_BAR)
+  if (impl->location_mode == LOCATION_MODE_PATH_BAR)
     {
       location_mode_set (impl, LOCATION_MODE_FILENAME_ENTRY, TRUE);
     }
-  else if (impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY)
+  else if (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
     {
-      if (gtk_widget_has_focus (impl->priv->location_entry))
+      if (gtk_widget_has_focus (impl->location_entry))
         {
           location_mode_set (impl, LOCATION_MODE_PATH_BAR, TRUE);
         }
       else
         {
-          gtk_widget_grab_focus (impl->priv->location_entry);
+          gtk_widget_grab_focus (impl->location_entry);
         }
     }
 }
@@ -4252,18 +4802,41 @@ location_button_toggled_cb (GtkToggleButton *toggle,
 
   if (is_active)
     {
-      g_assert (impl->priv->location_mode == LOCATION_MODE_PATH_BAR);
+      g_assert (impl->location_mode == LOCATION_MODE_PATH_BAR);
       new_mode = LOCATION_MODE_FILENAME_ENTRY;
     }
   else
     {
-      g_assert (impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY);
+      g_assert (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY);
       new_mode = LOCATION_MODE_PATH_BAR;
     }
 
   location_mode_set (impl, new_mode, FALSE);
 }
 
+/* Creates a toggle button for the location entry. */
+static void
+location_button_create (GtkFileChooserDefault *impl)
+{
+  GtkWidget *image;
+  const char *str;
+
+  image = gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON);
+  gtk_widget_show (image);
+
+  impl->location_button = g_object_new (GTK_TYPE_TOGGLE_BUTTON,
+                                       "image", image,
+                                       NULL);
+
+  g_signal_connect (impl->location_button, "toggled",
+                   G_CALLBACK (location_button_toggled_cb), impl);
+
+  str = _("Type a file name");
+
+  gtk_widget_set_tooltip_text (impl->location_button, str);
+  atk_object_set_name (gtk_widget_get_accessible (impl->location_button), str);
+}
+
 typedef enum {
   PATH_BAR_FOLDER_PATH,
   PATH_BAR_SELECT_A_FOLDER,
@@ -4273,6 +4846,25 @@ typedef enum {
   PATH_BAR_SEARCH
 } PathBarMode;
 
+/* Creates the info bar for informational messages or warnings, with its icon and label */
+static void
+info_bar_create (GtkFileChooserDefault *impl)
+{
+  GtkWidget *content_area;
+
+  impl->browse_select_a_folder_info_bar = gtk_info_bar_new ();
+  impl->browse_select_a_folder_icon = gtk_image_new_from_stock (GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU);
+  impl->browse_select_a_folder_label = gtk_label_new (NULL);
+
+  content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (impl->browse_select_a_folder_info_bar));
+
+  gtk_box_pack_start (GTK_BOX (content_area), impl->browse_select_a_folder_icon, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (content_area), impl->browse_select_a_folder_label, FALSE, FALSE, 0);
+
+  gtk_widget_show (impl->browse_select_a_folder_icon);
+  gtk_widget_show (impl->browse_select_a_folder_label);
+}
+
 /* Sets the info bar to show the appropriate informational or warning message */
 static void
 info_bar_set (GtkFileChooserDefault *impl, PathBarMode mode)
@@ -4306,16 +4898,70 @@ info_bar_set (GtkFileChooserDefault *impl, PathBarMode mode)
       return;
     }
 
-  gtk_info_bar_set_message_type (GTK_INFO_BAR (impl->priv->browse_select_a_folder_info_bar), message_type);
-  gtk_image_set_from_stock (GTK_IMAGE (impl->priv->browse_select_a_folder_icon),
+  gtk_info_bar_set_message_type (GTK_INFO_BAR (impl->browse_select_a_folder_info_bar), message_type);
+  gtk_image_set_from_stock (GTK_IMAGE (impl->browse_select_a_folder_icon),
                            (message_type == GTK_MESSAGE_WARNING) ? GTK_STOCK_DIALOG_WARNING : 
GTK_STOCK_DIRECTORY,
                            GTK_ICON_SIZE_MENU);
-  gtk_label_set_markup (GTK_LABEL (impl->priv->browse_select_a_folder_label), str);
+  gtk_label_set_markup (GTK_LABEL (impl->browse_select_a_folder_label), str);
 
   if (free_str)
     g_free (str);
 }
 
+/* Creates the icon and label used to show that the file chooser is in Search or Recently-used mode */
+static void
+special_mode_widgets_create (GtkFileChooserDefault *impl)
+{
+  impl->browse_special_mode_icon = gtk_image_new ();
+  gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_special_mode_icon);
+  gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_special_mode_icon, FALSE, FALSE, 0);
+
+  impl->browse_special_mode_label = gtk_label_new (NULL);
+  gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_special_mode_label);
+  gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_special_mode_label, FALSE, FALSE, 
0);
+}
+
+/* Creates the path bar's container and eveyrthing that goes in it: location button, pathbar, info bar, and 
Create Folder button */
+static void
+path_bar_widgets_create (GtkFileChooserDefault *impl)
+{
+  /* Location widgets - note browse_path_bar_hbox is packed in the right place until switch_path_bar() */
+  impl->browse_path_bar_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+  gtk_widget_show (impl->browse_path_bar_hbox);
+
+  /* Size group that allows the path bar to be the same size between modes */
+  impl->browse_path_bar_size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
+  gtk_size_group_set_ignore_hidden (impl->browse_path_bar_size_group, FALSE);
+
+  /* Location button */
+  location_button_create (impl);
+  gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->location_button);
+  gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->location_button, FALSE, FALSE, 0);
+
+  /* Path bar */
+  impl->browse_path_bar = g_object_new (GTK_TYPE_PATH_BAR, NULL);
+  _gtk_path_bar_set_file_system (GTK_PATH_BAR (impl->browse_path_bar), impl->file_system);
+  g_signal_connect (impl->browse_path_bar, "path-clicked", G_CALLBACK (path_bar_clicked), impl);
+
+  gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_path_bar);
+  gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_path_bar, TRUE, TRUE, 0);
+
+  /* Info bar */
+  info_bar_create (impl);
+  gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_select_a_folder_info_bar);
+  gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_select_a_folder_info_bar, TRUE, 
TRUE, 0);
+
+  /* Widgets for special modes (recently-used in Open mode, Search mode) */
+  special_mode_widgets_create (impl);
+
+  /* Create Folder */
+  impl->browse_new_folder_button = gtk_button_new_with_mnemonic (_("Create Fo_lder"));
+  g_signal_connect (impl->browse_new_folder_button, "clicked",
+                   G_CALLBACK (new_folder_button_clicked), impl);
+  gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_new_folder_button);
+  gtk_box_pack_end (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_new_folder_button, FALSE, FALSE, 0);
+}
+
 /* Sets the path bar's mode to show a label, the actual folder path, or a
  * warning message.  You may call this function with PATH_BAR_ERROR_* directly
  * if the pathbar is already showing the widgets you expect; otherwise, call
@@ -4345,20 +4991,20 @@ path_bar_set_mode (GtkFileChooserDefault *impl, PathBarMode mode)
       break;
 
     case PATH_BAR_RECENTLY_USED:
-      gtk_image_set_from_icon_name (GTK_IMAGE (impl->priv->browse_special_mode_icon), 
"document-open-recent", GTK_ICON_SIZE_BUTTON);
+      gtk_image_set_from_icon_name (GTK_IMAGE (impl->browse_special_mode_icon), "document-open-recent", 
GTK_ICON_SIZE_BUTTON);
 
       tmp = g_strdup_printf ("<b>%s</b>", _("Recently Used"));
-      gtk_label_set_markup (GTK_LABEL (impl->priv->browse_special_mode_label), tmp);
+      gtk_label_set_markup (GTK_LABEL (impl->browse_special_mode_label), tmp);
       g_free (tmp);
 
       special_mode_widgets_visible = TRUE;
       break;
 
     case PATH_BAR_SEARCH:
-      gtk_image_set_from_stock (GTK_IMAGE (impl->priv->browse_special_mode_icon), GTK_STOCK_FIND, 
GTK_ICON_SIZE_BUTTON);
+      gtk_image_set_from_stock (GTK_IMAGE (impl->browse_special_mode_icon), GTK_STOCK_FIND, 
GTK_ICON_SIZE_BUTTON);
 
       tmp = g_strdup_printf ("<b>%s</b>", _("Search:"));
-      gtk_label_set_markup (GTK_LABEL (impl->priv->browse_special_mode_label), tmp);
+      gtk_label_set_markup (GTK_LABEL (impl->browse_special_mode_label), tmp);
       g_free (tmp);
 
       special_mode_widgets_visible = TRUE;
@@ -4368,20 +5014,64 @@ path_bar_set_mode (GtkFileChooserDefault *impl, PathBarMode mode)
       g_assert_not_reached ();
     }
 
-  gtk_widget_set_visible (impl->priv->browse_path_bar,                 path_bar_visible);
-  gtk_widget_set_visible (impl->priv->browse_special_mode_icon,                special_mode_widgets_visible);
-  gtk_widget_set_visible (impl->priv->browse_special_mode_label,               special_mode_widgets_visible);
-  gtk_widget_set_visible (impl->priv->browse_select_a_folder_info_bar, info_bar_visible);
+  gtk_widget_set_visible (impl->browse_path_bar,                       path_bar_visible);
+  gtk_widget_set_visible (impl->browse_special_mode_icon,              special_mode_widgets_visible);
+  gtk_widget_set_visible (impl->browse_special_mode_label,             special_mode_widgets_visible);
+  gtk_widget_set_visible (impl->browse_select_a_folder_info_bar,       info_bar_visible);
 
   if (path_bar_visible)
     {
-      if (impl->priv->create_folders
-         && impl->priv->action != GTK_FILE_CHOOSER_ACTION_OPEN
-         && impl->priv->operation_mode != OPERATION_MODE_RECENT)
+      if (impl->create_folders
+         && impl->action != GTK_FILE_CHOOSER_ACTION_OPEN
+         && impl->operation_mode != OPERATION_MODE_RECENT)
        create_folder_visible = TRUE;
     }
 
-  gtk_widget_set_visible (impl->priv->browse_new_folder_button,                create_folder_visible);
+  gtk_widget_set_visible (impl->browse_new_folder_button,              create_folder_visible);
+}
+
+/* Creates the main hpaned with the widgets shared by Open and Save mode */
+static void
+browse_widgets_create (GtkFileChooserDefault *impl)
+{
+  GtkWidget *hpaned;
+  GtkWidget *widget;
+  GtkSizeGroup *size_group;
+
+  impl->browse_widgets_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+  gtk_box_pack_start (GTK_BOX (impl), impl->browse_widgets_box, TRUE, TRUE, 0);
+  gtk_widget_show (impl->browse_widgets_box);
+
+  impl->browse_header_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+  gtk_box_pack_start (GTK_BOX (impl->browse_widgets_box), impl->browse_header_box, FALSE, FALSE, 0);
+  gtk_widget_show (impl->browse_header_box);
+
+  /* Path bar, info bar, and their respective machinery - the browse_path_bar_hbox will get packed elsewhere 
*/
+  path_bar_widgets_create (impl);
+
+  /* Box for the location label and entry */
+
+  impl->location_entry_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+  gtk_box_pack_start (GTK_BOX (impl->browse_header_box), impl->location_entry_box, FALSE, FALSE, 0);
+
+  impl->location_label = gtk_label_new_with_mnemonic (_("_Location:"));
+  gtk_widget_show (impl->location_label);
+  gtk_box_pack_start (GTK_BOX (impl->location_entry_box), impl->location_label, FALSE, FALSE, 0);
+
+  /* size group is used by the scrolled windows of the panes */
+  size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
+
+  /* Paned widget */
+
+  hpaned = impl->browse_widgets_hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
+  gtk_widget_show (hpaned);
+  gtk_box_pack_start (GTK_BOX (impl->browse_widgets_box), hpaned, TRUE, TRUE, 0);
+
+  widget = shortcuts_pane_create (impl, size_group);
+  gtk_paned_pack1 (GTK_PANED (hpaned), widget, FALSE, FALSE);
+  widget = file_pane_create (impl, size_group);
+  gtk_paned_pack2 (GTK_PANED (hpaned), widget, TRUE, FALSE);
+  g_object_unref (size_group);
 }
 
 static GObject*
@@ -4399,9 +5089,23 @@ gtk_file_chooser_default_constructor (GType                  type,
                                                                                construct_params);
   impl = GTK_FILE_CHOOSER_DEFAULT (object);
 
+  g_assert (impl->file_system);
 
-  g_assert (impl->priv->file_system);
+  gtk_widget_push_composite_child ();
 
+  /* Shortcuts model */
+  shortcuts_model_create (impl);
+
+  /* The browse widgets */
+  browse_widgets_create (impl);
+
+  /* Alignment to hold extra widget */
+  impl->extra_align = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+  gtk_widget_set_halign (impl->extra_align, GTK_ALIGN_START);
+  gtk_widget_set_valign (impl->extra_align, GTK_ALIGN_CENTER);
+  gtk_box_pack_start (GTK_BOX (impl), impl->extra_align, FALSE, FALSE, 0);
+
+  gtk_widget_pop_composite_child ();
   update_appearance (impl);
 
   profile_end ("end", NULL);
@@ -4421,41 +5125,41 @@ set_extra_widget (GtkFileChooserDefault *impl,
       gtk_widget_show (extra_widget);
     }
 
-  if (impl->priv->extra_widget)
+  if (impl->extra_widget)
     {
-      gtk_container_remove (GTK_CONTAINER (impl->priv->extra_align), impl->priv->extra_widget);
-      g_object_unref (impl->priv->extra_widget);
+      gtk_container_remove (GTK_CONTAINER (impl->extra_align), impl->extra_widget);
+      g_object_unref (impl->extra_widget);
     }
 
-  impl->priv->extra_widget = extra_widget;
-  if (impl->priv->extra_widget)
+  impl->extra_widget = extra_widget;
+  if (impl->extra_widget)
     {
-      gtk_container_add (GTK_CONTAINER (impl->priv->extra_align), impl->priv->extra_widget);
-      gtk_widget_show (impl->priv->extra_align);
+      gtk_container_add (GTK_CONTAINER (impl->extra_align), impl->extra_widget);
+      gtk_widget_show (impl->extra_align);
     }
   else
-    gtk_widget_hide (impl->priv->extra_align);
+    gtk_widget_hide (impl->extra_align);
 }
 
 static void
 set_local_only (GtkFileChooserDefault *impl,
                gboolean               local_only)
 {
-  if (local_only != impl->priv->local_only)
+  if (local_only != impl->local_only)
     {
-      impl->priv->local_only = local_only;
+      impl->local_only = local_only;
 
-      if (impl->priv->location_entry)
-       _gtk_file_chooser_entry_set_local_only (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry), 
local_only);
+      if (impl->location_entry)
+       _gtk_file_chooser_entry_set_local_only (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), local_only);
 
-      if (impl->priv->shortcuts_model && impl->priv->file_system)
+      if (impl->shortcuts_model && impl->file_system)
        {
          shortcuts_add_volumes (impl);
          shortcuts_add_bookmarks (impl);
        }
 
-      if (local_only && impl->priv->current_folder &&
-           !_gtk_file_has_native_path (impl->priv->current_folder))
+      if (local_only && impl->current_folder &&
+           !_gtk_file_has_native_path (impl->current_folder))
        {
          /* If we are pointing to a non-local folder, make an effort to change
           * back to a local folder, but it's really up to the app to not cause
@@ -4497,17 +5201,17 @@ set_select_multiple (GtkFileChooserDefault *impl,
   GtkTreeSelection *selection;
   GtkSelectionMode mode;
 
-  if (select_multiple == impl->priv->select_multiple)
+  if (select_multiple == impl->select_multiple)
     return;
 
   mode = select_multiple ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   gtk_tree_selection_set_mode (selection, mode);
 
-  gtk_tree_view_set_rubber_banding (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), select_multiple);
+  gtk_tree_view_set_rubber_banding (GTK_TREE_VIEW (impl->browse_files_tree_view), select_multiple);
 
-  impl->priv->select_multiple = select_multiple;
+  impl->select_multiple = select_multiple;
   g_object_notify (G_OBJECT (impl), "select-multiple");
 
   check_preview_change (impl);
@@ -4518,11 +5222,11 @@ set_file_system_backend (GtkFileChooserDefault *impl)
 {
   profile_start ("start for backend", "default");
 
-  impl->priv->file_system = _gtk_file_system_new ();
+  impl->file_system = _gtk_file_system_new ();
 
-  g_signal_connect (impl->priv->file_system, "volumes-changed",
+  g_signal_connect (impl->file_system, "volumes-changed",
                    G_CALLBACK (volumes_bookmarks_changed_cb), impl);
-  g_signal_connect (impl->priv->file_system, "bookmarks-changed",
+  g_signal_connect (impl->file_system, "bookmarks-changed",
                    G_CALLBACK (volumes_bookmarks_changed_cb), impl);
 
   profile_end ("end", NULL);
@@ -4531,12 +5235,12 @@ set_file_system_backend (GtkFileChooserDefault *impl)
 static void
 unset_file_system_backend (GtkFileChooserDefault *impl)
 {
-  g_signal_handlers_disconnect_by_func (impl->priv->file_system,
+  g_signal_handlers_disconnect_by_func (impl->file_system,
                                        G_CALLBACK (volumes_bookmarks_changed_cb), impl);
 
-  g_object_unref (impl->priv->file_system);
+  g_object_unref (impl->file_system);
 
-  impl->priv->file_system = NULL;
+  impl->file_system = NULL;
 }
 
 /* Saves the widgets around the pathbar so they can be reparented later
@@ -4548,11 +5252,11 @@ save_path_bar (GtkFileChooserDefault *impl)
 {
   GtkWidget *parent;
 
-  g_object_ref (impl->priv->browse_path_bar_hbox);
+  g_object_ref (impl->browse_path_bar_hbox);
 
-  parent = gtk_widget_get_parent (impl->priv->browse_path_bar_hbox);
+  parent = gtk_widget_get_parent (impl->browse_path_bar_hbox);
   if (parent)
-    gtk_container_remove (GTK_CONTAINER (parent), impl->priv->browse_path_bar_hbox);
+    gtk_container_remove (GTK_CONTAINER (parent), impl->browse_path_bar_hbox);
 }
 
 /* Reparents the path bar and the "Create folder" button to the right place:
@@ -4563,23 +5267,23 @@ save_path_bar (GtkFileChooserDefault *impl)
 static void
 restore_path_bar (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN
-      || impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
+      || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
-      gtk_box_pack_start (GTK_BOX (impl->priv->browse_header_box), impl->priv->browse_path_bar_hbox, FALSE, 
FALSE, 0);
-      gtk_box_reorder_child (GTK_BOX (impl->priv->browse_header_box), impl->priv->browse_path_bar_hbox, 0);
+      gtk_box_pack_start (GTK_BOX (impl->browse_header_box), impl->browse_path_bar_hbox, FALSE, FALSE, 0);
+      gtk_box_reorder_child (GTK_BOX (impl->browse_header_box), impl->browse_path_bar_hbox, 0);
     }
-  else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
-          || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+  else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+          || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
     {
-      gtk_widget_set_hexpand (impl->priv->browse_path_bar_hbox, TRUE);
-      gtk_grid_attach (GTK_GRID (impl->priv->save_widgets_table), impl->priv->browse_path_bar_hbox, 1, 1, 1, 
1);
-      gtk_label_set_mnemonic_widget (GTK_LABEL (impl->priv->save_folder_label), impl->priv->browse_path_bar);
+      gtk_widget_set_hexpand (impl->browse_path_bar_hbox, TRUE);
+      gtk_grid_attach (GTK_GRID (impl->save_widgets_table), impl->browse_path_bar_hbox, 1, 1, 1, 1);
+      gtk_label_set_mnemonic_widget (GTK_LABEL (impl->save_folder_label), impl->browse_path_bar);
     }
   else
     g_assert_not_reached ();
 
-  g_object_unref (impl->priv->browse_path_bar_hbox);
+  g_object_unref (impl->browse_path_bar_hbox);
 }
 
 /* Takes the folder stored in a row in the recent_model, and puts it in the pathbar */
@@ -4588,15 +5292,15 @@ put_recent_folder_in_pathbar (GtkFileChooserDefault *impl, GtkTreeIter *iter)
 {
   GFile *file;
 
-  gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->recent_model), iter,
+  gtk_tree_model_get (GTK_TREE_MODEL (impl->recent_model), iter,
                      MODEL_COL_FILE, &file,
                      -1);
-  _gtk_path_bar_set_file (GTK_PATH_BAR (impl->priv->browse_path_bar), file, FALSE);
+  _gtk_path_bar_set_file (GTK_PATH_BAR (impl->browse_path_bar), file, FALSE);
   g_object_unref (file);
 }
 
 /* Sets the pathbar in the appropriate mode according to the current operation mode and action.  This is the 
central function for
- * dealing with the pathbar's widgets; as long as impl->priv->action and impl->priv->operation_mode are set 
correctly, then calling this
+ * dealing with the pathbar's widgets; as long as impl->action and impl->operation_mode are set correctly, 
then calling this
  * function will update all the pathbar's widgets.
  */
 static void
@@ -4604,20 +5308,20 @@ path_bar_update (GtkFileChooserDefault *impl)
 {
   PathBarMode mode;
 
-  switch (impl->priv->operation_mode)
+  switch (impl->operation_mode)
     {
     case OPERATION_MODE_BROWSE:
       mode = PATH_BAR_FOLDER_PATH;
       break;
 
     case OPERATION_MODE_RECENT:
-      if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+      if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
        {
          GtkTreeSelection *selection;
          gboolean have_selected;
          GtkTreeIter iter;
 
-         selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+         selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
 
          /* Save mode means single-selection mode, so the following is valid */
          have_selected = gtk_tree_selection_get_selected (selection, NULL, &iter);
@@ -4650,12 +5354,12 @@ path_bar_update (GtkFileChooserDefault *impl)
 static void
 operation_mode_discard_search_widgets (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->search_hbox)
+  if (impl->search_hbox)
     {
-      gtk_widget_destroy (impl->priv->search_hbox);
+      gtk_widget_destroy (impl->search_hbox);
 
-      impl->priv->search_hbox = NULL;
-      impl->priv->search_entry = NULL;
+      impl->search_hbox = NULL;
+      impl->search_entry = NULL;
     }
 }
 
@@ -4691,23 +5395,23 @@ operation_mode_set_browse (GtkFileChooserDefault *impl)
 {
   path_bar_update (impl);
 
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
-      gtk_widget_show (impl->priv->location_button);
-      location_mode_set (impl, impl->priv->location_mode, TRUE);
+      gtk_widget_show (impl->location_button);
+      location_mode_set (impl, impl->location_mode, TRUE);
 
-      if (impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY)
-       gtk_widget_show (impl->priv->location_entry_box);
+      if (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
+       gtk_widget_show (impl->location_entry_box);
     }
 }
 
 static void
 operation_mode_set_search (GtkFileChooserDefault *impl)
 {
-  g_assert (impl->priv->search_hbox == NULL);
-  g_assert (impl->priv->search_entry == NULL);
-  g_assert (impl->priv->search_model == NULL);
+  g_assert (impl->search_hbox == NULL);
+  g_assert (impl->search_entry == NULL);
+  g_assert (impl->search_model == NULL);
 
   search_setup_widgets (impl);
 }
@@ -4718,11 +5422,11 @@ operation_mode_set_recent (GtkFileChooserDefault *impl)
   path_bar_update (impl);
 
   /* Hide the location widgets temporarily */
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
-      gtk_widget_hide (impl->priv->location_button);
-      gtk_widget_hide (impl->priv->location_entry_box);
+      gtk_widget_hide (impl->location_button);
+      gtk_widget_hide (impl->location_entry_box);
     }
 
   recent_start_loading (impl);
@@ -4735,7 +5439,7 @@ shortcuts_select_item_without_activating (GtkFileChooserDefault *impl, int pos)
   GtkTreeSelection *selection;
   GtkTreePath *path;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
 
   g_signal_handlers_block_by_func (selection, G_CALLBACK (shortcuts_selection_changed_cb), impl);
 
@@ -4751,11 +5455,11 @@ operation_mode_set (GtkFileChooserDefault *impl, OperationMode mode)
 {
   ShortcutsIndex shortcut_to_select;
 
-  operation_mode_stop (impl, impl->priv->operation_mode);
+  operation_mode_stop (impl, impl->operation_mode);
 
-  impl->priv->operation_mode = mode;
+  impl->operation_mode = mode;
 
-  switch (impl->priv->operation_mode)
+  switch (impl->operation_mode)
     {
     case OPERATION_MODE_BROWSE:
       operation_mode_set_browse (impl);
@@ -4791,38 +5495,38 @@ update_appearance (GtkFileChooserDefault *impl)
 {
   save_path_bar (impl);
 
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
     {
       const char *text;
 
-      gtk_widget_hide (impl->priv->location_button);
+      gtk_widget_hide (impl->location_button);
       save_widgets_create (impl);
 
-      if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+      if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
        text = _("Save in _folder:");
       else
        text = _("Create in _folder:");
 
-      gtk_label_set_text_with_mnemonic (GTK_LABEL (impl->priv->save_folder_label), text);
+      gtk_label_set_text_with_mnemonic (GTK_LABEL (impl->save_folder_label), text);
 
-      if (impl->priv->select_multiple)
+      if (impl->select_multiple)
        {
          g_warning ("Save mode cannot be set in conjunction with multiple selection mode.  "
                     "Re-setting to single selection mode.");
          set_select_multiple (impl, FALSE, TRUE);
        }
     }
-  else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-          impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  else if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+          impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
-      gtk_widget_show (impl->priv->location_button);
+      gtk_widget_show (impl->location_button);
       save_widgets_destroy (impl);
-      location_mode_set (impl, impl->priv->location_mode, TRUE);
+      location_mode_set (impl, impl->location_mode, TRUE);
     }
 
-  if (impl->priv->location_entry)
-    _gtk_file_chooser_entry_set_action (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry), 
impl->priv->action);
+  if (impl->location_entry)
+    _gtk_file_chooser_entry_set_action (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), impl->action);
 
   restore_path_bar (impl);
   path_bar_update (impl);
@@ -4830,7 +5534,7 @@ update_appearance (GtkFileChooserDefault *impl)
   /* This *is* needed; we need to redraw the file list because the "sensitivity"
    * of files may change depending whether we are in a file or folder-only mode.
    */
-  gtk_widget_queue_draw (impl->priv->browse_files_tree_view);
+  gtk_widget_queue_draw (impl->browse_files_tree_view);
 
   emit_default_size_changed (impl);
 }
@@ -4850,20 +5554,20 @@ gtk_file_chooser_default_set_property (GObject      *object,
       {
        GtkFileChooserAction action = g_value_get_enum (value);
 
-       if (action != impl->priv->action)
+       if (action != impl->action)
          {
            gtk_file_chooser_default_unselect_all (GTK_FILE_CHOOSER (impl));
            
            if ((action == GTK_FILE_CHOOSER_ACTION_SAVE ||
                  action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
-               && impl->priv->select_multiple)
+               && impl->select_multiple)
              {
                g_warning ("Tried to change the file chooser action to SAVE or CREATE_FOLDER, but "
                           "this is not allowed in multiple selection mode.  Resetting the file chooser "
                           "to single selection mode.");
                set_select_multiple (impl, FALSE, TRUE);
              }
-           impl->priv->action = action;
+           impl->action = action;
             update_cell_renderer_attributes (impl);
            update_appearance (impl);
            settings_load (impl);
@@ -4884,12 +5588,12 @@ gtk_file_chooser_default_set_property (GObject      *object,
       break;
 
     case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET_ACTIVE:
-      impl->priv->preview_widget_active = g_value_get_boolean (value);
+      impl->preview_widget_active = g_value_get_boolean (value);
       update_preview_widget_visibility (impl);
       break;
 
     case GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL:
-      impl->priv->use_preview_label = g_value_get_boolean (value);
+      impl->use_preview_label = g_value_get_boolean (value);
       update_preview_widget_visibility (impl);
       break;
 
@@ -4900,8 +5604,8 @@ gtk_file_chooser_default_set_property (GObject      *object,
     case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
       {
        gboolean select_multiple = g_value_get_boolean (value);
-       if ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
-             impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+       if ((impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+             impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
            && select_multiple)
          {
            g_warning ("Tried to set the file chooser to multiple selection mode, but this is "
@@ -4917,12 +5621,12 @@ gtk_file_chooser_default_set_property (GObject      *object,
     case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
       {
        gboolean show_hidden = g_value_get_boolean (value);
-       if (show_hidden != impl->priv->show_hidden)
+       if (show_hidden != impl->show_hidden)
          {
-           impl->priv->show_hidden = show_hidden;
+           impl->show_hidden = show_hidden;
 
-           if (impl->priv->browse_files_model)
-             _gtk_file_system_model_set_show_hidden (impl->priv->browse_files_model, show_hidden);
+           if (impl->browse_files_model)
+             _gtk_file_system_model_set_show_hidden (impl->browse_files_model, show_hidden);
          }
       }
       break;
@@ -4930,14 +5634,14 @@ gtk_file_chooser_default_set_property (GObject      *object,
     case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
       {
        gboolean do_overwrite_confirmation = g_value_get_boolean (value);
-       impl->priv->do_overwrite_confirmation = do_overwrite_confirmation;
+       impl->do_overwrite_confirmation = do_overwrite_confirmation;
       }
       break;
 
     case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
       {
         gboolean create_folders = g_value_get_boolean (value);
-        impl->priv->create_folders = create_folders;
+        impl->create_folders = create_folders;
         update_appearance (impl);
       }
       break;
@@ -4959,47 +5663,47 @@ gtk_file_chooser_default_get_property (GObject    *object,
   switch (prop_id)
     {
     case GTK_FILE_CHOOSER_PROP_ACTION:
-      g_value_set_enum (value, impl->priv->action);
+      g_value_set_enum (value, impl->action);
       break;
 
     case GTK_FILE_CHOOSER_PROP_FILTER:
-      g_value_set_object (value, impl->priv->current_filter);
+      g_value_set_object (value, impl->current_filter);
       break;
 
     case GTK_FILE_CHOOSER_PROP_LOCAL_ONLY:
-      g_value_set_boolean (value, impl->priv->local_only);
+      g_value_set_boolean (value, impl->local_only);
       break;
 
     case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET:
-      g_value_set_object (value, impl->priv->preview_widget);
+      g_value_set_object (value, impl->preview_widget);
       break;
 
     case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET_ACTIVE:
-      g_value_set_boolean (value, impl->priv->preview_widget_active);
+      g_value_set_boolean (value, impl->preview_widget_active);
       break;
 
     case GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL:
-      g_value_set_boolean (value, impl->priv->use_preview_label);
+      g_value_set_boolean (value, impl->use_preview_label);
       break;
 
     case GTK_FILE_CHOOSER_PROP_EXTRA_WIDGET:
-      g_value_set_object (value, impl->priv->extra_widget);
+      g_value_set_object (value, impl->extra_widget);
       break;
 
     case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
-      g_value_set_boolean (value, impl->priv->select_multiple);
+      g_value_set_boolean (value, impl->select_multiple);
       break;
 
     case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
-      g_value_set_boolean (value, impl->priv->show_hidden);
+      g_value_set_boolean (value, impl->show_hidden);
       break;
 
     case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
-      g_value_set_boolean (value, impl->priv->do_overwrite_confirmation);
+      g_value_set_boolean (value, impl->do_overwrite_confirmation);
       break;
 
     case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
-      g_value_set_boolean (value, impl->priv->create_folders);
+      g_value_set_boolean (value, impl->create_folders);
       break;
 
     default:
@@ -5016,62 +5720,62 @@ cancel_all_operations (GtkFileChooserDefault *impl)
 
   pending_select_files_free (impl);
 
-  if (impl->priv->reload_icon_cancellables)
+  if (impl->reload_icon_cancellables)
     {
-      for (l = impl->priv->reload_icon_cancellables; l; l = l->next)
+      for (l = impl->reload_icon_cancellables; l; l = l->next)
         {
          GCancellable *cancellable = G_CANCELLABLE (l->data);
          g_cancellable_cancel (cancellable);
         }
-      g_slist_free (impl->priv->reload_icon_cancellables);
-      impl->priv->reload_icon_cancellables = NULL;
+      g_slist_free (impl->reload_icon_cancellables);
+      impl->reload_icon_cancellables = NULL;
     }
 
-  if (impl->priv->loading_shortcuts)
+  if (impl->loading_shortcuts)
     {
-      for (l = impl->priv->loading_shortcuts; l; l = l->next)
+      for (l = impl->loading_shortcuts; l; l = l->next)
         {
          GCancellable *cancellable = G_CANCELLABLE (l->data);
          g_cancellable_cancel (cancellable);
         }
-      g_slist_free (impl->priv->loading_shortcuts);
-      impl->priv->loading_shortcuts = NULL;
+      g_slist_free (impl->loading_shortcuts);
+      impl->loading_shortcuts = NULL;
     }
 
-  if (impl->priv->file_list_drag_data_received_cancellable)
+  if (impl->file_list_drag_data_received_cancellable)
     {
-      g_cancellable_cancel (impl->priv->file_list_drag_data_received_cancellable);
-      impl->priv->file_list_drag_data_received_cancellable = NULL;
+      g_cancellable_cancel (impl->file_list_drag_data_received_cancellable);
+      impl->file_list_drag_data_received_cancellable = NULL;
     }
 
-  if (impl->priv->update_current_folder_cancellable)
+  if (impl->update_current_folder_cancellable)
     {
-      g_cancellable_cancel (impl->priv->update_current_folder_cancellable);
-      impl->priv->update_current_folder_cancellable = NULL;
+      g_cancellable_cancel (impl->update_current_folder_cancellable);
+      impl->update_current_folder_cancellable = NULL;
     }
 
-  if (impl->priv->should_respond_get_info_cancellable)
+  if (impl->should_respond_get_info_cancellable)
     {
-      g_cancellable_cancel (impl->priv->should_respond_get_info_cancellable);
-      impl->priv->should_respond_get_info_cancellable = NULL;
+      g_cancellable_cancel (impl->should_respond_get_info_cancellable);
+      impl->should_respond_get_info_cancellable = NULL;
     }
 
-  if (impl->priv->file_exists_get_info_cancellable)
+  if (impl->file_exists_get_info_cancellable)
     {
-      g_cancellable_cancel (impl->priv->file_exists_get_info_cancellable);
-      impl->priv->file_exists_get_info_cancellable = NULL;
+      g_cancellable_cancel (impl->file_exists_get_info_cancellable);
+      impl->file_exists_get_info_cancellable = NULL;
     }
 
-  if (impl->priv->update_from_entry_cancellable)
+  if (impl->update_from_entry_cancellable)
     {
-      g_cancellable_cancel (impl->priv->update_from_entry_cancellable);
-      impl->priv->update_from_entry_cancellable = NULL;
+      g_cancellable_cancel (impl->update_from_entry_cancellable);
+      impl->update_from_entry_cancellable = NULL;
     }
 
-  if (impl->priv->shortcuts_activate_iter_cancellable)
+  if (impl->shortcuts_activate_iter_cancellable)
     {
-      g_cancellable_cancel (impl->priv->shortcuts_activate_iter_cancellable);
-      impl->priv->shortcuts_activate_iter_cancellable = NULL;
+      g_cancellable_cancel (impl->shortcuts_activate_iter_cancellable);
+      impl->shortcuts_activate_iter_cancellable = NULL;
     }
 
   search_stop_searching (impl, TRUE);
@@ -5083,14 +5787,14 @@ static void
 remove_settings_signal (GtkFileChooserDefault *impl,
                        GdkScreen             *screen)
 {
-  if (impl->priv->settings_signal_id)
+  if (impl->settings_signal_id)
     {
       GtkSettings *settings;
 
       settings = gtk_settings_get_for_screen (screen);
       g_signal_handler_disconnect (settings,
-                                  impl->priv->settings_signal_id);
-      impl->priv->settings_signal_id = 0;
+                                  impl->settings_signal_id);
+      impl->settings_signal_id = 0;
     }
 }
 
@@ -5101,12 +5805,10 @@ gtk_file_chooser_default_dispose (GObject *object)
 
   cancel_all_operations (impl);
 
-  shortcuts_free (impl);
-
-  if (impl->priv->extra_widget)
+  if (impl->extra_widget)
     {
-      g_object_unref (impl->priv->extra_widget);
-      impl->priv->extra_widget = NULL;
+      g_object_unref (impl->extra_widget);
+      impl->extra_widget = NULL;
     }
 
   remove_settings_signal (impl, gtk_widget_get_screen (GTK_WIDGET (impl)));
@@ -5125,8 +5827,8 @@ gtk_file_chooser_default_show_all (GtkWidget *widget)
 
   gtk_widget_show (widget);
 
-  if (impl->priv->extra_widget)
-    gtk_widget_show_all (impl->priv->extra_widget);
+  if (impl->extra_widget)
+    gtk_widget_show_all (impl->extra_widget);
 }
 
 /* Handler for GtkWindow::set-focus; this is where we save the last-focused
@@ -5137,7 +5839,7 @@ toplevel_set_focus_cb (GtkWindow             *window,
                       GtkWidget             *focus,
                       GtkFileChooserDefault *impl)
 {
-  impl->priv->toplevel_last_focus_widget = gtk_window_get_focus (window);
+  impl->toplevel_last_focus_widget = gtk_window_get_focus (window);
 }
 
 /* We monitor the focus widget on our toplevel to be able to know which widget
@@ -5154,20 +5856,20 @@ gtk_file_chooser_default_hierarchy_changed (GtkWidget *widget,
   toplevel = gtk_widget_get_toplevel (widget);
 
   if (previous_toplevel && 
-      impl->priv->toplevel_set_focus_id != 0)
+      impl->toplevel_set_focus_id != 0)
     {
       g_signal_handler_disconnect (previous_toplevel,
-                                   impl->priv->toplevel_set_focus_id);
-      impl->priv->toplevel_set_focus_id = 0;
-      impl->priv->toplevel_last_focus_widget = NULL;
+                                   impl->toplevel_set_focus_id);
+      impl->toplevel_set_focus_id = 0;
+      impl->toplevel_last_focus_widget = NULL;
     }
 
   if (gtk_widget_is_toplevel (toplevel))
     {
-      g_assert (impl->priv->toplevel_set_focus_id == 0);
-      impl->priv->toplevel_set_focus_id = g_signal_connect (toplevel, "set-focus",
+      g_assert (impl->toplevel_set_focus_id == 0);
+      impl->toplevel_set_focus_id = g_signal_connect (toplevel, "set-focus",
                                                      G_CALLBACK (toplevel_set_focus_cb), impl);
-      impl->priv->toplevel_last_focus_widget = gtk_window_get_focus (GTK_WINDOW (toplevel));
+      impl->toplevel_last_focus_widget = gtk_window_get_focus (GTK_WINDOW (toplevel));
     }
 }
 
@@ -5177,26 +5879,28 @@ change_icon_theme (GtkFileChooserDefault *impl)
 {
   GtkSettings *settings;
   gint width, height;
+  GtkCellRenderer *renderer;
+  GList *cells;
 
   profile_start ("start", NULL);
 
   settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
 
   if (gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU, &width, &height))
-    impl->priv->icon_size = MAX (width, height);
+    impl->icon_size = MAX (width, height);
   else
-    impl->priv->icon_size = FALLBACK_ICON_SIZE;
+    impl->icon_size = FALLBACK_ICON_SIZE;
 
   shortcuts_reload_icons (impl);
-
-  /* the first cell in the first column is the icon column,
-   * and we have a fixed size there
-   */
-  set_icon_cell_renderer_fixed_size (impl);
-
-  if (impl->priv->browse_files_model)
-    _gtk_file_system_model_clear_cache (impl->priv->browse_files_model, MODEL_COL_PIXBUF);
-  gtk_widget_queue_resize (impl->priv->browse_files_tree_view);
+  /* the first cell in the first column is the icon column, and we have a fixed size there */
+  cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (
+        gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_files_tree_view), 0)));
+  renderer = GTK_CELL_RENDERER (cells->data);
+  set_icon_cell_renderer_fixed_size (impl, renderer);
+  g_list_free (cells);
+  if (impl->browse_files_model)
+    _gtk_file_system_model_clear_cache (impl->browse_files_model, MODEL_COL_PIXBUF);
+  gtk_widget_queue_resize (impl->browse_files_tree_view);
 
   profile_end ("end", NULL);
 }
@@ -5230,7 +5934,7 @@ check_icon_theme (GtkFileChooserDefault *impl)
 
   profile_start ("start", NULL);
 
-  if (impl->priv->settings_signal_id)
+  if (impl->settings_signal_id)
     {
       profile_end ("end", NULL);
       return;
@@ -5239,7 +5943,7 @@ check_icon_theme (GtkFileChooserDefault *impl)
   if (gtk_widget_has_screen (GTK_WIDGET (impl)))
     {
       settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
-      impl->priv->settings_signal_id = g_signal_connect (settings, "notify",
+      impl->settings_signal_id = g_signal_connect (settings, "notify",
                                                   G_CALLBACK (settings_notify_cb), impl);
 
       change_icon_theme (impl);
@@ -5295,15 +5999,15 @@ set_sort_column (GtkFileChooserDefault *impl)
 {
   GtkTreeSortable *sortable;
 
-  sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW 
(impl->priv->browse_files_tree_view)));
+  sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view)));
 
   /* can happen when we're still populating the model */
   if (sortable == NULL)
     return;
 
   gtk_tree_sortable_set_sort_column_id (sortable,
-                                        impl->priv->sort_column,
-                                        impl->priv->sort_order);
+                                        impl->sort_column,
+                                        impl->sort_order);
 }
 
 static void
@@ -5330,17 +6034,17 @@ settings_load (GtkFileChooserDefault *impl)
 
   gtk_file_chooser_set_show_hidden (GTK_FILE_CHOOSER (impl), show_hidden);
 
-  impl->priv->show_size_column = show_size_column;
-  gtk_tree_view_column_set_visible (impl->priv->list_size_column, show_size_column);
+  impl->show_size_column = show_size_column;
+  gtk_tree_view_column_set_visible (impl->list_size_column, show_size_column);
 
-  impl->priv->sort_column = sort_column;
-  impl->priv->sort_order = sort_order;
+  impl->sort_column = sort_column;
+  impl->sort_order = sort_order;
   /* We don't call set_sort_column() here as the models may not have been
    * created yet.  The individual functions that create and set the models will
    * call set_sort_column() themselves.
    */
 
-  gtk_paned_set_position (GTK_PANED (impl->priv->browse_widgets_hpaned), sidebar_width);
+  gtk_paned_set_position (GTK_PANED (impl->browse_widgets_hpaned), sidebar_width);
 }
 
 static void
@@ -5352,14 +6056,14 @@ settings_save (GtkFileChooserDefault *impl)
 
   /* All the other state */
 
-  g_settings_set_enum (settings, SETTINGS_KEY_LOCATION_MODE, impl->priv->location_mode);
+  g_settings_set_enum (settings, SETTINGS_KEY_LOCATION_MODE, impl->location_mode);
   g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_HIDDEN,
                           gtk_file_chooser_get_show_hidden (GTK_FILE_CHOOSER (impl)));
-  g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_SIZE_COLUMN, impl->priv->show_size_column);
-  g_settings_set_enum (settings, SETTINGS_KEY_SORT_COLUMN, impl->priv->sort_column);
-  g_settings_set_enum (settings, SETTINGS_KEY_SORT_ORDER, impl->priv->sort_order);
+  g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_SIZE_COLUMN, impl->show_size_column);
+  g_settings_set_enum (settings, SETTINGS_KEY_SORT_COLUMN, impl->sort_column);
+  g_settings_set_enum (settings, SETTINGS_KEY_SORT_ORDER, impl->sort_order);
   g_settings_set_int (settings, SETTINGS_KEY_SIDEBAR_WIDTH,
-                     gtk_paned_get_position (GTK_PANED (impl->priv->browse_widgets_hpaned)));
+                     gtk_paned_get_position (GTK_PANED (impl->browse_widgets_hpaned)));
 
   /* Now apply the settings */
   g_settings_apply (settings);
@@ -5390,9 +6094,9 @@ gtk_file_chooser_default_map (GtkWidget *widget)
 
   GTK_WIDGET_CLASS (_gtk_file_chooser_default_parent_class)->map (widget);
 
-  if (impl->priv->operation_mode == OPERATION_MODE_BROWSE)
+  if (impl->operation_mode == OPERATION_MODE_BROWSE)
     {
-      switch (impl->priv->reload_state)
+      switch (impl->reload_state)
         {
         case RELOAD_EMPTY:
          recent_shortcut_handler (impl);
@@ -5409,7 +6113,7 @@ gtk_file_chooser_default_map (GtkWidget *widget)
       }
     }
 
-  volumes_bookmarks_changed_cb (impl->priv->file_system, impl);
+  volumes_bookmarks_changed_cb (impl->file_system, impl);
 
   settings_load (impl);
 
@@ -5427,7 +6131,7 @@ gtk_file_chooser_default_unmap (GtkWidget *widget)
   settings_save (impl);
 
   cancel_all_operations (impl);
-  impl->priv->reload_state = RELOAD_EMPTY;
+  impl->reload_state = RELOAD_EMPTY;
 
   GTK_WIDGET_CLASS (_gtk_file_chooser_default_parent_class)->unmap (widget);
 }
@@ -5441,7 +6145,7 @@ gtk_file_chooser_default_unmap (GtkWidget *widget)
   dir_b = g_value_get_boolean (_gtk_file_system_model_get_value (fs_model, b, MODEL_COL_IS_FOLDER));         
  \
                                                                                                              
 \
   if (dir_a != dir_b)                                                                                        
 \
-    return impl->priv->list_sort_ascending ? (dir_a ? -1 : 1) : (dir_a ? 1 : -1) /* Directories *always* go 
first */
+    return impl->list_sort_ascending ? (dir_a ? -1 : 1) : (dir_a ? 1 : -1) /* Directories *always* go first 
*/
 
 /* Sort callback for the filename column */
 static gint
@@ -5522,9 +6226,9 @@ list_sort_column_changed_cb (GtkTreeSortable       *sortable,
 
   if (gtk_tree_sortable_get_sort_column_id (sortable, &sort_column_id, &sort_type))
     {
-      impl->priv->list_sort_ascending = (sort_type == GTK_SORT_ASCENDING);
-      impl->priv->sort_column = sort_column_id;
-      impl->priv->sort_order = sort_type;
+      impl->list_sort_ascending = (sort_type == GTK_SORT_ASCENDING);
+      impl->sort_column = sort_column_id;
+      impl->sort_order = sort_type;
     }
 }
 
@@ -5562,18 +6266,18 @@ load_set_model (GtkFileChooserDefault *impl)
 {
   profile_start ("start", NULL);
 
-  g_assert (impl->priv->browse_files_model != NULL);
+  g_assert (impl->browse_files_model != NULL);
 
   profile_msg ("    gtk_tree_view_set_model start", NULL);
-  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
-                          GTK_TREE_MODEL (impl->priv->browse_files_model));
-  gtk_tree_view_columns_autosize (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
-  gtk_tree_view_set_search_column (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
+                          GTK_TREE_MODEL (impl->browse_files_model));
+  gtk_tree_view_columns_autosize (GTK_TREE_VIEW (impl->browse_files_tree_view));
+  gtk_tree_view_set_search_column (GTK_TREE_VIEW (impl->browse_files_tree_view),
                                   MODEL_COL_NAME);
   file_list_set_sort_column_ids (impl);
   set_sort_column (impl);
   profile_msg ("    gtk_tree_view_set_model end", NULL);
-  impl->priv->list_sort_ascending = TRUE;
+  impl->list_sort_ascending = TRUE;
 
   profile_end ("end", NULL);
 }
@@ -5587,12 +6291,12 @@ load_timeout_cb (gpointer data)
   profile_start ("start", NULL);
 
   impl = GTK_FILE_CHOOSER_DEFAULT (data);
-  g_assert (impl->priv->load_state == LOAD_PRELOAD);
-  g_assert (impl->priv->load_timeout_id != 0);
-  g_assert (impl->priv->browse_files_model != NULL);
+  g_assert (impl->load_state == LOAD_PRELOAD);
+  g_assert (impl->load_timeout_id != 0);
+  g_assert (impl->browse_files_model != NULL);
 
-  impl->priv->load_timeout_id = 0;
-  impl->priv->load_state = LOAD_LOADING;
+  impl->load_timeout_id = 0;
+  impl->load_state = LOAD_LOADING;
 
   load_set_model (impl);
 
@@ -5605,33 +6309,33 @@ load_timeout_cb (gpointer data)
 static void
 load_setup_timer (GtkFileChooserDefault *impl)
 {
-  g_assert (impl->priv->load_timeout_id == 0);
-  g_assert (impl->priv->load_state != LOAD_PRELOAD);
+  g_assert (impl->load_timeout_id == 0);
+  g_assert (impl->load_state != LOAD_PRELOAD);
 
-  impl->priv->load_timeout_id = gdk_threads_add_timeout (MAX_LOADING_TIME, load_timeout_cb, impl);
-  impl->priv->load_state = LOAD_PRELOAD;
+  impl->load_timeout_id = gdk_threads_add_timeout (MAX_LOADING_TIME, load_timeout_cb, impl);
+  impl->load_state = LOAD_PRELOAD;
 }
 
-/* Removes the load timeout; changes the impl->priv->load_state to the specified value. */
+/* Removes the load timeout; changes the impl->load_state to the specified value. */
 static void
 load_remove_timer (GtkFileChooserDefault *impl, LoadState new_load_state)
 {
-  if (impl->priv->load_timeout_id != 0)
+  if (impl->load_timeout_id != 0)
     {
-      g_assert (impl->priv->load_state == LOAD_PRELOAD);
+      g_assert (impl->load_state == LOAD_PRELOAD);
 
-      g_source_remove (impl->priv->load_timeout_id);
-      impl->priv->load_timeout_id = 0;
+      g_source_remove (impl->load_timeout_id);
+      impl->load_timeout_id = 0;
     }
   else
-    g_assert (impl->priv->load_state == LOAD_EMPTY ||
-             impl->priv->load_state == LOAD_LOADING ||
-             impl->priv->load_state == LOAD_FINISHED);
+    g_assert (impl->load_state == LOAD_EMPTY ||
+             impl->load_state == LOAD_LOADING ||
+             impl->load_state == LOAD_FINISHED);
 
   g_assert (new_load_state == LOAD_EMPTY ||
            new_load_state == LOAD_LOADING ||
            new_load_state == LOAD_FINISHED);
-  impl->priv->load_state = new_load_state;
+  impl->load_state = new_load_state;
 }
 
 /* Selects the first row in the file list */
@@ -5642,7 +6346,7 @@ browse_files_select_first_row (GtkFileChooserDefault *impl)
   GtkTreeIter dummy_iter;
   GtkTreeModel *tree_model;
 
-  tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view));
 
   if (!tree_model)
     return;
@@ -5651,7 +6355,7 @@ browse_files_select_first_row (GtkFileChooserDefault *impl)
 
   /* If the list is empty, do nothing. */
   if (gtk_tree_model_get_iter (tree_model, &dummy_iter, path))
-      gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), path, NULL, FALSE);
+      gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view), path, NULL, FALSE);
 
   gtk_tree_path_free (path);
 }
@@ -5676,7 +6380,7 @@ center_selected_row_foreach_cb (GtkTreeModel      *model,
   if (closure->already_centered)
     return;
 
-  gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (closure->impl->priv->browse_files_tree_view), path, NULL, 
TRUE, 0.5, 0.0);
+  gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (closure->impl->browse_files_tree_view), path, NULL, TRUE, 
0.5, 0.0);
   closure->already_centered = TRUE;
 }
 
@@ -5690,7 +6394,7 @@ browse_files_center_selected_row (GtkFileChooserDefault *impl)
   closure.impl = impl;
   closure.already_centered = FALSE;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   gtk_tree_selection_selected_foreach (selection, center_selected_row_foreach_cb, &closure);
 }
 
@@ -5704,16 +6408,16 @@ show_and_select_files (GtkFileChooserDefault *impl,
   gboolean selected_a_file;
   GSList *walk;
 
-  g_assert (impl->priv->load_state == LOAD_FINISHED);
-  g_assert (impl->priv->browse_files_model != NULL);
+  g_assert (impl->load_state == LOAD_FINISHED);
+  g_assert (impl->browse_files_model != NULL);
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
-  fsmodel = GTK_FILE_SYSTEM_MODEL (gtk_tree_view_get_model (GTK_TREE_VIEW 
(impl->priv->browse_files_tree_view)));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+  fsmodel = GTK_FILE_SYSTEM_MODEL (gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view)));
 
-  g_assert (fsmodel == impl->priv->browse_files_model);
+  g_assert (fsmodel == impl->browse_files_model);
 
-  enabled_hidden = impl->priv->show_hidden;
-  removed_filters = (impl->priv->current_filter == NULL);
+  enabled_hidden = impl->show_hidden;
+  removed_filters = (impl->current_filter == NULL);
 
   selected_a_file = FALSE;
 
@@ -5767,7 +6471,7 @@ show_and_select_files (GtkFileChooserDefault *impl,
           gtk_tree_selection_select_iter (selection, &iter);
 
           path = gtk_tree_model_get_path (GTK_TREE_MODEL (fsmodel), &iter);
-          gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+          gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view),
                                     path, NULL, FALSE);
           gtk_tree_path_free (path);
 
@@ -5784,12 +6488,12 @@ show_and_select_files (GtkFileChooserDefault *impl,
 static void
 pending_select_files_process (GtkFileChooserDefault *impl)
 {
-  g_assert (impl->priv->load_state == LOAD_FINISHED);
-  g_assert (impl->priv->browse_files_model != NULL);
+  g_assert (impl->load_state == LOAD_FINISHED);
+  g_assert (impl->browse_files_model != NULL);
 
-  if (impl->priv->pending_select_files)
+  if (impl->pending_select_files)
     {
-      show_and_select_files (impl, impl->priv->pending_select_files);
+      show_and_select_files (impl, impl->pending_select_files);
       pending_select_files_free (impl);
       browse_files_center_selected_row (impl);
     }
@@ -5802,12 +6506,12 @@ pending_select_files_process (GtkFileChooserDefault *impl)
        * that case, the chooser's selection should be what the caller expects,
        * as the user can't see that something else got selected.  See bug #165264.
        */
-      if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN &&
+      if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN &&
           gtk_widget_get_mapped (GTK_WIDGET (impl)))
        browse_files_select_first_row (impl);
     }
 
-  g_assert (impl->priv->pending_select_files == NULL);
+  g_assert (impl->pending_select_files == NULL);
 }
 
 static void
@@ -5816,7 +6520,7 @@ show_error_on_reading_current_folder (GtkFileChooserDefault *impl, GError *error
   GFileInfo *info;
   char *msg;
 
-  info = g_file_query_info (impl->priv->current_folder,
+  info = g_file_query_info (impl->current_folder,
                            G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME,
                            G_FILE_QUERY_INFO_NONE,
                            NULL,
@@ -5844,12 +6548,12 @@ browse_files_model_finished_loading_cb (GtkFileSystemModel    *model,
   if (error)
     show_error_on_reading_current_folder (impl, error);
 
-  if (impl->priv->load_state == LOAD_PRELOAD)
+  if (impl->load_state == LOAD_PRELOAD)
     {
       load_remove_timer (impl, LOAD_FINISHED);
       load_set_model (impl);
     }
-  else if (impl->priv->load_state == LOAD_LOADING)
+  else if (impl->load_state == LOAD_LOADING)
     {
       /* Nothing */
     }
@@ -5862,9 +6566,9 @@ browse_files_model_finished_loading_cb (GtkFileSystemModel    *model,
       return;
     }
 
-  g_assert (impl->priv->load_timeout_id == 0);
+  g_assert (impl->load_timeout_id == 0);
 
-  impl->priv->load_state = LOAD_FINISHED;
+  impl->load_state = LOAD_FINISHED;
 
   pending_select_files_process (impl);
   set_busy_cursor (impl, FALSE);
@@ -5881,14 +6585,14 @@ stop_loading_and_clear_list_model (GtkFileChooserDefault *impl,
 {
   load_remove_timer (impl, LOAD_EMPTY);
   
-  if (impl->priv->browse_files_model)
+  if (impl->browse_files_model)
     {
-      g_object_unref (impl->priv->browse_files_model);
-      impl->priv->browse_files_model = NULL;
+      g_object_unref (impl->browse_files_model);
+      impl->browse_files_model = NULL;
     }
 
   if (remove_from_treeview)
-    gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), NULL);
+    gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view), NULL);
 }
 
 static char *
@@ -6075,8 +6779,8 @@ file_system_model_set (GtkFileSystemModel *model,
         {
           gboolean sensitive = TRUE;
 
-          if (!(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
-               || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
+          if (!(impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+               || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
             {
               sensitive = TRUE; /* for file modes... */
             }
@@ -6103,7 +6807,7 @@ file_system_model_set (GtkFileSystemModel *model,
         {
           if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_ICON))
             {
-              g_value_take_object (value, _gtk_file_info_render_icon (info, GTK_WIDGET (impl), 
impl->priv->icon_size));
+              g_value_take_object (value, _gtk_file_info_render_icon (info, GTK_WIDGET (impl), 
impl->icon_size));
             }
           else
             {
@@ -6111,11 +6815,11 @@ file_system_model_set (GtkFileSystemModel *model,
               GtkTreePath *path, *start, *end;
               GtkTreeIter iter;
 
-              if (impl->priv->browse_files_tree_view == NULL ||
+              if (impl->browse_files_tree_view == NULL ||
                   g_file_info_has_attribute (info, "filechooser::queried"))
                 return FALSE;
 
-              tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+              tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view));
               if (tree_model != GTK_TREE_MODEL (model))
                 return FALSE;
 
@@ -6123,7 +6827,7 @@ file_system_model_set (GtkFileSystemModel *model,
                                                              &iter,
                                                              file))
                 g_assert_not_reached ();
-              if (!gtk_tree_view_get_visible_range (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), 
&start, &end))
+              if (!gtk_tree_view_get_visible_range (GTK_TREE_VIEW (impl->browse_files_tree_view), &start, 
&end))
                 return FALSE;
               path = gtk_tree_model_get_path (tree_model, &iter);
               if (gtk_tree_path_compare (start, path) != 1 &&
@@ -6189,7 +6893,7 @@ static gboolean
 set_list_model (GtkFileChooserDefault *impl,
                GError               **error)
 {
-  g_assert (impl->priv->current_folder != NULL);
+  g_assert (impl->current_folder != NULL);
 
   profile_start ("start", NULL);
 
@@ -6197,31 +6901,31 @@ set_list_model (GtkFileChooserDefault *impl,
 
   set_busy_cursor (impl, TRUE);
 
-  impl->priv->browse_files_model = 
-    _gtk_file_system_model_new_for_directory (impl->priv->current_folder,
+  impl->browse_files_model = 
+    _gtk_file_system_model_new_for_directory (impl->current_folder,
                                              MODEL_ATTRIBUTES,
                                              file_system_model_set,
                                              impl,
                                              MODEL_COLUMN_TYPES);
 
-  _gtk_file_system_model_set_show_hidden (impl->priv->browse_files_model, impl->priv->show_hidden);
+  _gtk_file_system_model_set_show_hidden (impl->browse_files_model, impl->show_hidden);
 
   profile_msg ("    set sort function", NULL);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->browse_files_model), MODEL_COL_NAME, 
name_sort_func, impl, NULL);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->browse_files_model), MODEL_COL_SIZE, 
size_sort_func, impl, NULL);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->browse_files_model), MODEL_COL_MTIME, 
mtime_sort_func, impl, NULL);
-  gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (impl->priv->browse_files_model), NULL, NULL, 
NULL);
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->browse_files_model), MODEL_COL_NAME, 
name_sort_func, impl, NULL);
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->browse_files_model), MODEL_COL_SIZE, 
size_sort_func, impl, NULL);
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->browse_files_model), MODEL_COL_MTIME, 
mtime_sort_func, impl, NULL);
+  gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (impl->browse_files_model), NULL, NULL, NULL);
   set_sort_column (impl);
-  impl->priv->list_sort_ascending = TRUE;
-  g_signal_connect (impl->priv->browse_files_model, "sort-column-changed",
+  impl->list_sort_ascending = TRUE;
+  g_signal_connect (impl->browse_files_model, "sort-column-changed",
                    G_CALLBACK (list_sort_column_changed_cb), impl);
 
   load_setup_timer (impl); /* This changes the state to LOAD_PRELOAD */
 
-  g_signal_connect (impl->priv->browse_files_model, "finished-loading",
+  g_signal_connect (impl->browse_files_model, "finished-loading",
                    G_CALLBACK (browse_files_model_finished_loading_cb), impl);
 
-  _gtk_file_system_model_set_filter (impl->priv->browse_files_model, impl->priv->current_filter);
+  _gtk_file_system_model_set_filter (impl->browse_files_model, impl->current_filter);
 
   profile_end ("end", NULL);
 
@@ -6273,38 +6977,38 @@ update_chooser_entry (GtkFileChooserDefault *impl)
   struct update_chooser_entry_selected_foreach_closure closure;
 
   /* no need to update the file chooser's entry if there's no entry */
-  if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
-      !impl->priv->location_entry)
+  if (impl->operation_mode == OPERATION_MODE_SEARCH ||
+      !impl->location_entry)
     return;
 
-  if (!(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
-        || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
-        || ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN
-             || impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
-            && impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY)))
+  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)))
     return;
 
-  g_assert (impl->priv->location_entry != NULL);
+  g_assert (impl->location_entry != NULL);
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   closure.num_selected = 0;
   gtk_tree_selection_selected_foreach (selection, update_chooser_entry_selected_foreach, &closure);
 
   if (closure.num_selected == 0)
     {
-      if (impl->priv->operation_mode == OPERATION_MODE_RECENT)
-       _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry), NULL);
+      if (impl->operation_mode == OPERATION_MODE_RECENT)
+       _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), NULL);
       else
        goto maybe_clear_entry;
     }
   else if (closure.num_selected == 1)
     {
-      if (impl->priv->operation_mode == OPERATION_MODE_BROWSE)
+      if (impl->operation_mode == OPERATION_MODE_BROWSE)
         {
           GFileInfo *info;
           gboolean change_entry;
 
-          info = _gtk_file_system_model_get_info (impl->priv->browse_files_model, 
&closure.first_selected_iter);
+          info = _gtk_file_system_model_get_info (impl->browse_files_model, &closure.first_selected_iter);
 
           /* If the cursor moved to the row of the newly created folder,
            * retrieving info will return NULL.
@@ -6312,13 +7016,13 @@ update_chooser_entry (GtkFileChooserDefault *impl)
           if (!info)
             return;
 
-          g_free (impl->priv->browse_files_last_selected_name);
-          impl->priv->browse_files_last_selected_name =
+          g_free (impl->browse_files_last_selected_name);
+          impl->browse_files_last_selected_name =
             g_strdup (g_file_info_get_display_name (info));
 
-          if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-              impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
-              impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+          if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+              impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+              impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
             {
               /* Don't change the name when clicking on a folder... */
               change_entry = (! _gtk_file_info_consider_as_directory (info));
@@ -6328,52 +7032,52 @@ update_chooser_entry (GtkFileChooserDefault *impl)
 
           if (change_entry)
             {
-              gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), 
impl->priv->browse_files_last_selected_name);
+              gtk_entry_set_text (GTK_ENTRY (impl->location_entry), impl->browse_files_last_selected_name);
 
-              if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
-                _gtk_file_chooser_entry_select_filename (GTK_FILE_CHOOSER_ENTRY 
(impl->priv->location_entry));
+              if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+                _gtk_file_chooser_entry_select_filename (GTK_FILE_CHOOSER_ENTRY (impl->location_entry));
             }
 
           return;
         }
-      else if (impl->priv->operation_mode == OPERATION_MODE_RECENT
-              && impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+      else if (impl->operation_mode == OPERATION_MODE_RECENT
+              && impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
        {
          GFile *folder;
 
          /* Set the base folder on the name entry, so it will do completion relative to the correct 
recent-folder */
 
-         gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->recent_model), &closure.first_selected_iter,
+         gtk_tree_model_get (GTK_TREE_MODEL (impl->recent_model), &closure.first_selected_iter,
                              MODEL_COL_FILE, &folder,
                              -1);
-         _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry), 
folder);
+         _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), folder);
          g_object_unref (folder);
          return;
        }
     }
   else
     {
-      g_assert (!(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
-                  impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER));
+      g_assert (!(impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+                  impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER));
 
       /* Multiple selection, so just clear the entry. */
-      g_free (impl->priv->browse_files_last_selected_name);
-      impl->priv->browse_files_last_selected_name = NULL;
+      g_free (impl->browse_files_last_selected_name);
+      impl->browse_files_last_selected_name = NULL;
 
-      gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), "");
+      gtk_entry_set_text (GTK_ENTRY (impl->location_entry), "");
       return;
     }
 
  maybe_clear_entry:
 
-  if ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN || impl->priv->action == 
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
-      && impl->priv->browse_files_last_selected_name)
+  if ((impl->action == GTK_FILE_CHOOSER_ACTION_OPEN || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+      && impl->browse_files_last_selected_name)
     {
       const char *entry_text;
       int len;
       gboolean clear_entry;
 
-      entry_text = gtk_entry_get_text (GTK_ENTRY (impl->priv->location_entry));
+      entry_text = gtk_entry_get_text (GTK_ENTRY (impl->location_entry));
       len = strlen (entry_text);
       if (len != 0)
         {
@@ -6385,17 +7089,17 @@ update_chooser_entry (GtkFileChooserDefault *impl)
               gchar *tmp;
 
               tmp = g_strndup (entry_text, len - 1);
-              clear_entry = (compare_utf8_filenames (impl->priv->browse_files_last_selected_name, tmp) == 0);
+              clear_entry = (compare_utf8_filenames (impl->browse_files_last_selected_name, tmp) == 0);
               g_free (tmp);
             }
           else
-            clear_entry = (compare_utf8_filenames (impl->priv->browse_files_last_selected_name, entry_text) 
== 0);
+            clear_entry = (compare_utf8_filenames (impl->browse_files_last_selected_name, entry_text) == 0);
         }
       else
         clear_entry = FALSE;
 
       if (clear_entry)
-        gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), "");
+        gtk_entry_set_text (GTK_ENTRY (impl->location_entry), "");
     }
 }
 
@@ -6428,10 +7132,10 @@ update_current_folder_mount_enclosing_volume_cb (GCancellable        *cancellabl
   struct UpdateCurrentFolderData *data = user_data;
   GtkFileChooserDefault *impl = data->impl;
 
-  if (cancellable != impl->priv->update_current_folder_cancellable)
+  if (cancellable != impl->update_current_folder_cancellable)
     goto out;
 
-  impl->priv->update_current_folder_cancellable = NULL;
+  impl->update_current_folder_cancellable = NULL;
   set_busy_cursor (impl, FALSE);
 
   if (cancelled)
@@ -6440,7 +7144,7 @@ update_current_folder_mount_enclosing_volume_cb (GCancellable        *cancellabl
   if (error)
     {
       error_changing_folder_dialog (data->impl, data->file, g_error_copy (error));
-      impl->priv->reload_state = RELOAD_EMPTY;
+      impl->reload_state = RELOAD_EMPTY;
       goto out;
     }
 
@@ -6463,11 +7167,11 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
   struct UpdateCurrentFolderData *data = user_data;
   GtkFileChooserDefault *impl = data->impl;
 
-  if (cancellable != impl->priv->update_current_folder_cancellable)
+  if (cancellable != impl->update_current_folder_cancellable)
     goto out;
 
-  impl->priv->update_current_folder_cancellable = NULL;
-  impl->priv->reload_state = RELOAD_EMPTY;
+  impl->update_current_folder_cancellable = NULL;
+  impl->reload_state = RELOAD_EMPTY;
 
   set_busy_cursor (impl, FALSE);
 
@@ -6490,8 +7194,8 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
 
           set_busy_cursor (impl, TRUE);
 
-          impl->priv->update_current_folder_cancellable =
-            _gtk_file_system_mount_enclosing_volume (impl->priv->file_system, data->file,
+          impl->update_current_folder_cancellable =
+            _gtk_file_system_mount_enclosing_volume (impl->file_system, data->file,
                                                      mount_operation,
                                                      update_current_folder_mount_enclosing_volume_cb,
                                                      data);
@@ -6516,10 +7220,10 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
          g_object_unref (cancellable);
 
          /* restart the update current folder operation */
-         impl->priv->reload_state = RELOAD_HAS_FOLDER;
+         impl->reload_state = RELOAD_HAS_FOLDER;
 
-         impl->priv->update_current_folder_cancellable =
-           _gtk_file_system_get_info (impl->priv->file_system, data->file,
+         impl->update_current_folder_cancellable =
+           _gtk_file_system_get_info (impl->file_system, data->file,
                                       "standard::type",
                                       update_current_folder_get_info_cb,
                                       data);
@@ -6560,38 +7264,38 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
   if (! _gtk_file_info_consider_as_directory (info))
     goto out;
 
-  _gtk_path_bar_set_file (GTK_PATH_BAR (impl->priv->browse_path_bar), data->file, data->keep_trail);
+  _gtk_path_bar_set_file (GTK_PATH_BAR (impl->browse_path_bar), data->file, data->keep_trail);
 
-  if (impl->priv->current_folder != data->file)
+  if (impl->current_folder != data->file)
     {
-      if (impl->priv->current_folder)
-       g_object_unref (impl->priv->current_folder);
+      if (impl->current_folder)
+       g_object_unref (impl->current_folder);
 
-      impl->priv->current_folder = g_object_ref (data->file);
+      impl->current_folder = g_object_ref (data->file);
     }
 
-  impl->priv->reload_state = RELOAD_HAS_FOLDER;
+  impl->reload_state = RELOAD_HAS_FOLDER;
 
   /* Update the widgets that may trigger a folder change themselves.  */
 
-  if (!impl->priv->changing_folder)
+  if (!impl->changing_folder)
     {
-      impl->priv->changing_folder = TRUE;
+      impl->changing_folder = TRUE;
 
       shortcuts_update_current_folder (impl);
 
-      impl->priv->changing_folder = FALSE;
+      impl->changing_folder = FALSE;
     }
 
   /* Set the folder on the save entry */
 
-  if (impl->priv->location_entry)
+  if (impl->location_entry)
     {
-      _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry),
-                                              impl->priv->current_folder);
+      _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry),
+                                              impl->current_folder);
 
       if (data->clear_entry)
-        gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), "");
+        gtk_entry_set_text (GTK_ENTRY (impl->location_entry), "");
     }
 
   /* Create a new list model.  This is slightly evil; we store the result value
@@ -6634,7 +7338,7 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser    *chooser,
 
   operation_mode_set (impl, OPERATION_MODE_BROWSE);
 
-  if (impl->priv->local_only && !_gtk_file_has_native_path (file))
+  if (impl->local_only && !_gtk_file_has_native_path (file))
     {
       g_set_error_literal (error,
                            GTK_FILE_CHOOSER_ERROR,
@@ -6646,8 +7350,8 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser    *chooser,
       return FALSE;
     }
 
-  if (impl->priv->update_current_folder_cancellable)
-    g_cancellable_cancel (impl->priv->update_current_folder_cancellable);
+  if (impl->update_current_folder_cancellable)
+    g_cancellable_cancel (impl->update_current_folder_cancellable);
 
   /* Test validity of path here.  */
   data = g_new0 (struct UpdateCurrentFolderData, 1);
@@ -6656,10 +7360,10 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser    *chooser,
   data->keep_trail = keep_trail;
   data->clear_entry = clear_entry;
 
-  impl->priv->reload_state = RELOAD_HAS_FOLDER;
+  impl->reload_state = RELOAD_HAS_FOLDER;
 
-  impl->priv->update_current_folder_cancellable =
-    _gtk_file_system_get_info (impl->priv->file_system, file,
+  impl->update_current_folder_cancellable =
+    _gtk_file_system_get_info (impl->file_system, file,
                               "standard::type",
                               update_current_folder_get_info_cb,
                               data);
@@ -6676,12 +7380,12 @@ gtk_file_chooser_default_get_current_folder (GtkFileChooser *chooser)
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
 
-  if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
-      impl->priv->operation_mode == OPERATION_MODE_RECENT)
+  if (impl->operation_mode == OPERATION_MODE_SEARCH ||
+      impl->operation_mode == OPERATION_MODE_RECENT)
     return NULL;
  
-  if (impl->priv->current_folder)
-    return g_object_ref (impl->priv->current_folder);
+  if (impl->current_folder)
+    return g_object_ref (impl->current_folder);
 
   return NULL;
 }
@@ -6692,11 +7396,11 @@ gtk_file_chooser_default_set_current_name (GtkFileChooser *chooser,
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
 
-  g_return_if_fail (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
-                   impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
+  g_return_if_fail (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+                   impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
 
   pending_select_files_free (impl);
-  gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), name);
+  gtk_entry_set_text (GTK_ENTRY (impl->location_entry), name);
 }
 
 static gboolean
@@ -6713,20 +7417,20 @@ gtk_file_chooser_default_select_file (GtkFileChooser  *chooser,
   if (!parent_file)
     return gtk_file_chooser_set_current_folder_file (chooser, file, error);
 
-  if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
-      impl->priv->operation_mode == OPERATION_MODE_RECENT ||
-      impl->priv->load_state == LOAD_EMPTY)
+  if (impl->operation_mode == OPERATION_MODE_SEARCH ||
+      impl->operation_mode == OPERATION_MODE_RECENT ||
+      impl->load_state == LOAD_EMPTY)
     {
       same_path = FALSE;
     }
   else
     {
-      g_assert (impl->priv->current_folder != NULL);
+      g_assert (impl->current_folder != NULL);
 
-      same_path = g_file_equal (parent_file, impl->priv->current_folder);
+      same_path = g_file_equal (parent_file, impl->current_folder);
     }
 
-  if (same_path && impl->priv->load_state == LOAD_FINISHED)
+  if (same_path && impl->load_state == LOAD_FINISHED)
     {
       gboolean result;
       GSList files;
@@ -6759,13 +7463,13 @@ gtk_file_chooser_default_unselect_file (GtkFileChooser *chooser,
                                        GFile          *file)
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
-  GtkTreeView *tree_view = GTK_TREE_VIEW (impl->priv->browse_files_tree_view);
+  GtkTreeView *tree_view = GTK_TREE_VIEW (impl->browse_files_tree_view);
   GtkTreeIter iter;
 
-  if (!impl->priv->browse_files_model)
+  if (!impl->browse_files_model)
     return;
 
-  if (!_gtk_file_system_model_get_iter_for_file (impl->priv->browse_files_model,
+  if (!_gtk_file_system_model_get_iter_for_file (impl->browse_files_model,
                                                  &iter,
                                                  file))
     return;
@@ -6785,7 +7489,7 @@ maybe_select (GtkTreeModel *model,
   gboolean is_sensitive;
   gboolean is_folder;
   
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   
   gtk_tree_model_get (model, iter,
                       MODEL_COL_IS_FOLDER, &is_folder,
@@ -6793,8 +7497,8 @@ maybe_select (GtkTreeModel *model,
                       -1);
 
   if (is_sensitive &&
-      ((is_folder && impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) ||
-       (!is_folder && impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN)))
+      ((is_folder && impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) ||
+       (!is_folder && impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)))
     gtk_tree_selection_select_iter (selection, iter);
   else
     gtk_tree_selection_unselect_iter (selection, iter);
@@ -6807,18 +7511,18 @@ gtk_file_chooser_default_select_all (GtkFileChooser *chooser)
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
 
-  if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
-      impl->priv->operation_mode == OPERATION_MODE_RECENT)
+  if (impl->operation_mode == OPERATION_MODE_SEARCH ||
+      impl->operation_mode == OPERATION_MODE_RECENT)
     {
       GtkTreeSelection *selection;
       
-      selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+      selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
       gtk_tree_selection_select_all (selection);
       return;
     }
 
-  if (impl->priv->select_multiple)
-    gtk_tree_model_foreach (GTK_TREE_MODEL (impl->priv->browse_files_model), 
+  if (impl->select_multiple)
+    gtk_tree_model_foreach (GTK_TREE_MODEL (impl->browse_files_model), 
                            maybe_select, impl);
 }
 
@@ -6826,7 +7530,7 @@ static void
 gtk_file_chooser_default_unselect_all (GtkFileChooser *chooser)
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
-  GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW 
(impl->priv->browse_files_tree_view));
+  GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
 
   gtk_tree_selection_unselect_all (selection);
   pending_select_files_free (impl);
@@ -6855,13 +7559,13 @@ check_save_entry (GtkFileChooserDefault *impl,
   GFile *file;
   GError *error;
 
-  g_assert (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
-           || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
-           || ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN
-                || impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
-               && impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY));
+  g_assert (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));
 
-  chooser_entry = GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry);
+  chooser_entry = GTK_FILE_CHOOSER_ENTRY (impl->location_entry);
 
   if (strlen (gtk_entry_get_text (GTK_ENTRY (chooser_entry))) == 0)
     {
@@ -6937,7 +7641,7 @@ get_files_foreach (GtkTreeModel *model,
   GtkFileSystemModel *fs_model;
 
   info = data;
-  fs_model = info->impl->priv->browse_files_model;
+  fs_model = info->impl->browse_files_model;
 
   file = _gtk_file_system_model_get_file (fs_model, iter);
   if (!file)
@@ -6960,12 +7664,12 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
   info.result = NULL;
   info.file_from_entry = NULL;
 
-  if (impl->priv->operation_mode == OPERATION_MODE_SEARCH)
+  if (impl->operation_mode == OPERATION_MODE_SEARCH)
     return search_get_selected_files (impl);
 
-  if (impl->priv->operation_mode == OPERATION_MODE_RECENT)
+  if (impl->operation_mode == OPERATION_MODE_RECENT)
     {
-      if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+      if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
        {
          file_list_seen = TRUE;
          goto file_entry;
@@ -6981,14 +7685,14 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
     current_focus = NULL;
 
   file_list_seen = FALSE;
-  if (current_focus == impl->priv->browse_files_tree_view)
+  if (current_focus == impl->browse_files_tree_view)
     {
       GtkTreeSelection *selection;
 
     file_list:
 
       file_list_seen = TRUE;
-      selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+      selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
       gtk_tree_selection_selected_foreach (selection, get_files_foreach, &info);
 
       /* If there is no selection in the file list, we probably have this situation:
@@ -6999,10 +7703,10 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
        * So we want the selection to be "bar/foo.txt".  Jump to the case for the
        * filename entry to see if that is the case.
        */
-      if (info.result == NULL && impl->priv->location_entry)
+      if (info.result == NULL && impl->location_entry)
        goto file_entry;
     }
-  else if (impl->priv->location_entry && current_focus == impl->priv->location_entry)
+  else if (impl->location_entry && current_focus == impl->location_entry)
     {
       gboolean is_well_formed, is_empty, is_file_part_empty, is_folder;
 
@@ -7016,7 +7720,7 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
       if (!is_well_formed)
        return NULL;
 
-      if (is_file_part_empty && impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+      if (is_file_part_empty && impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
        {
          g_object_unref (info.file_from_entry);
          return NULL;
@@ -7029,15 +7733,15 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
       else
         return NULL;
     }
-  else if (impl->priv->toplevel_last_focus_widget == impl->priv->browse_files_tree_view)
+  else if (impl->toplevel_last_focus_widget == impl->browse_files_tree_view)
     goto file_list;
-  else if (impl->priv->location_entry && impl->priv->toplevel_last_focus_widget == 
impl->priv->location_entry)
+  else if (impl->location_entry && impl->toplevel_last_focus_widget == impl->location_entry)
     goto file_entry;
   else
     {
       /* The focus is on a dialog's action area button or something else */
-      if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
-          impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+      if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+          impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
        goto file_entry;
       else
        goto file_list; 
@@ -7047,7 +7751,7 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
 
   /* If there's no folder selected, and we're in SELECT_FOLDER mode, then we
    * fall back to the current directory */
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER &&
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER &&
       info.result == NULL)
     {
       GFile *current_folder;
@@ -7066,8 +7770,8 @@ gtk_file_chooser_default_get_preview_file (GtkFileChooser *chooser)
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
 
-  if (impl->priv->preview_file)
-    return g_object_ref (impl->priv->preview_file);
+  if (impl->preview_file)
+    return g_object_ref (impl->preview_file);
   else
     return NULL;
 }
@@ -7077,7 +7781,7 @@ gtk_file_chooser_default_get_file_system (GtkFileChooser *chooser)
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
 
-  return impl->priv->file_system;
+  return impl->file_system;
 }
 
 /* Shows or hides the filter widgets */
@@ -7086,9 +7790,9 @@ show_filters (GtkFileChooserDefault *impl,
              gboolean               show)
 {
   if (show)
-    gtk_widget_show (impl->priv->filter_combo_hbox);
+    gtk_widget_show (impl->filter_combo_hbox);
   else
-    gtk_widget_hide (impl->priv->filter_combo_hbox);
+    gtk_widget_hide (impl->filter_combo_hbox);
 }
 
 static void
@@ -7098,22 +7802,22 @@ gtk_file_chooser_default_add_filter (GtkFileChooser *chooser,
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
   const gchar *name;
 
-  if (g_slist_find (impl->priv->filters, filter))
+  if (g_slist_find (impl->filters, filter))
     {
       g_warning ("gtk_file_chooser_add_filter() called on filter already in list\n");
       return;
     }
 
   g_object_ref_sink (filter);
-  impl->priv->filters = g_slist_append (impl->priv->filters, filter);
+  impl->filters = g_slist_append (impl->filters, filter);
 
   name = gtk_file_filter_get_name (filter);
   if (!name)
     name = "Untitled filter";  /* Place-holder, doesn't need to be marked for translation */
 
-  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (impl->priv->filter_combo), name);
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (impl->filter_combo), name);
 
-  if (!g_slist_find (impl->priv->filters, impl->priv->current_filter))
+  if (!g_slist_find (impl->filters, impl->current_filter))
     set_current_filter (impl, filter);
 
   show_filters (impl, TRUE);
@@ -7128,7 +7832,7 @@ gtk_file_chooser_default_remove_filter (GtkFileChooser *chooser,
   GtkTreeIter iter;
   gint filter_index;
 
-  filter_index = g_slist_index (impl->priv->filters, filter);
+  filter_index = g_slist_index (impl->filters, filter);
 
   if (filter_index < 0)
     {
@@ -7136,18 +7840,18 @@ gtk_file_chooser_default_remove_filter (GtkFileChooser *chooser,
       return;
     }
 
-  impl->priv->filters = g_slist_remove (impl->priv->filters, filter);
+  impl->filters = g_slist_remove (impl->filters, filter);
 
-  if (filter == impl->priv->current_filter)
+  if (filter == impl->current_filter)
     {
-      if (impl->priv->filters)
-       set_current_filter (impl, impl->priv->filters->data);
+      if (impl->filters)
+       set_current_filter (impl, impl->filters->data);
       else
        set_current_filter (impl, NULL);
     }
 
   /* Remove row from the combo box */
-  model = gtk_combo_box_get_model (GTK_COMBO_BOX (impl->priv->filter_combo));
+  model = gtk_combo_box_get_model (GTK_COMBO_BOX (impl->filter_combo));
   if (!gtk_tree_model_iter_nth_child  (model, &iter, NULL, filter_index))
     g_assert_not_reached ();
 
@@ -7155,7 +7859,7 @@ gtk_file_chooser_default_remove_filter (GtkFileChooser *chooser,
 
   g_object_unref (filter);
 
-  if (!impl->priv->filters)
+  if (!impl->filters)
     show_filters (impl, FALSE);
 }
 
@@ -7164,7 +7868,7 @@ gtk_file_chooser_default_list_filters (GtkFileChooser *chooser)
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
 
-  return g_slist_copy (impl->priv->filters);
+  return g_slist_copy (impl->filters);
 }
 
 /* Returns the position in the shortcuts tree where the nth specified shortcut would appear */
@@ -7191,15 +7895,15 @@ add_shortcut_get_info_cb (GCancellable *cancellable,
   gboolean cancelled = g_cancellable_is_cancelled (cancellable);
   struct AddShortcutData *data = user_data;
 
-  if (!g_slist_find (data->impl->priv->loading_shortcuts, cancellable))
+  if (!g_slist_find (data->impl->loading_shortcuts, cancellable))
     goto out;
 
-  data->impl->priv->loading_shortcuts = g_slist_remove (data->impl->priv->loading_shortcuts, cancellable);
+  data->impl->loading_shortcuts = g_slist_remove (data->impl->loading_shortcuts, cancellable);
 
   if (cancelled || error || (! _gtk_file_info_consider_as_directory (info)))
     goto out;
 
-  pos = shortcuts_get_pos_for_shortcut_folder (data->impl, data->impl->priv->num_shortcuts);
+  pos = shortcuts_get_pos_for_shortcut_folder (data->impl, data->impl->num_shortcuts);
 
   shortcuts_insert_file (data->impl, pos, SHORTCUT_TYPE_FILE, NULL, data->file, NULL, FALSE, 
SHORTCUTS_SHORTCUTS);
 
@@ -7243,7 +7947,7 @@ gtk_file_chooser_default_add_shortcut_folder (GtkFileChooser  *chooser,
       return FALSE;
     }
 
-  for (l = impl->priv->loading_shortcuts; l; l = l->next)
+  for (l = impl->loading_shortcuts; l; l = l->next)
     {
       GCancellable *c = l->data;
       GFile *f;
@@ -7269,14 +7973,14 @@ gtk_file_chooser_default_add_shortcut_folder (GtkFileChooser  *chooser,
   data->impl = g_object_ref (impl);
   data->file = g_object_ref (file);
 
-  cancellable = _gtk_file_system_get_info (impl->priv->file_system, file,
+  cancellable = _gtk_file_system_get_info (impl->file_system, file,
                                           "standard::type",
                                           add_shortcut_get_info_cb, data);
 
   if (!cancellable)
     return FALSE;
 
-  impl->priv->loading_shortcuts = g_slist_append (impl->priv->loading_shortcuts, cancellable);
+  impl->loading_shortcuts = g_slist_append (impl->loading_shortcuts, cancellable);
   g_object_set_data (G_OBJECT (cancellable), "add-shortcut-path-key", data->file);
 
   return TRUE;
@@ -7294,7 +7998,7 @@ gtk_file_chooser_default_remove_shortcut_folder (GtkFileChooser  *chooser,
   char *uri;
   int i;
 
-  for (l = impl->priv->loading_shortcuts; l; l = l->next)
+  for (l = impl->loading_shortcuts; l; l = l->next)
     {
       GCancellable *c = l->data;
       GFile *f;
@@ -7302,26 +8006,26 @@ gtk_file_chooser_default_remove_shortcut_folder (GtkFileChooser  *chooser,
       f = g_object_get_data (G_OBJECT (c), "add-shortcut-path-key");
       if (f && g_file_equal (file, f))
         {
-         impl->priv->loading_shortcuts = g_slist_remove (impl->priv->loading_shortcuts, c);
+         impl->loading_shortcuts = g_slist_remove (impl->loading_shortcuts, c);
          g_cancellable_cancel (c);
           return TRUE;
        }
     }
 
-  if (impl->priv->num_shortcuts == 0)
+  if (impl->num_shortcuts == 0)
     goto out;
 
   pos = shortcuts_get_pos_for_shortcut_folder (impl, 0);
-  if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, NULL, pos))
+  if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->shortcuts_model), &iter, NULL, pos))
     g_assert_not_reached ();
 
-  for (i = 0; i < impl->priv->num_shortcuts; i++)
+  for (i = 0; i < impl->num_shortcuts; i++)
     {
       gpointer col_data;
       ShortcutType shortcut_type;
       GFile *shortcut;
 
-      gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+      gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                          SHORTCUTS_COL_DATA, &col_data,
                          SHORTCUTS_COL_TYPE, &shortcut_type,
                          -1);
@@ -7332,11 +8036,11 @@ gtk_file_chooser_default_remove_shortcut_folder (GtkFileChooser  *chooser,
       if (g_file_equal (shortcut, file))
        {
          shortcuts_remove_rows (impl, pos + i, 1);
-         impl->priv->num_shortcuts--;
+         impl->num_shortcuts--;
          return TRUE;
        }
 
-      if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
+      if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
        g_assert_not_reached ();
     }
 
@@ -7363,22 +8067,22 @@ gtk_file_chooser_default_list_shortcut_folders (GtkFileChooser *chooser)
   int i;
   GSList *list;
 
-  if (impl->priv->num_shortcuts == 0)
+  if (impl->num_shortcuts == 0)
     return NULL;
 
   pos = shortcuts_get_pos_for_shortcut_folder (impl, 0);
-  if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, NULL, pos))
+  if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->shortcuts_model), &iter, NULL, pos))
     g_assert_not_reached ();
 
   list = NULL;
 
-  for (i = 0; i < impl->priv->num_shortcuts; i++)
+  for (i = 0; i < impl->num_shortcuts; i++)
     {
       gpointer col_data;
       ShortcutType shortcut_type;
       GFile *shortcut;
 
-      gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
+      gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
                          SHORTCUTS_COL_DATA, &col_data,
                          SHORTCUTS_COL_TYPE, &shortcut_type,
                          -1);
@@ -7388,9 +8092,9 @@ gtk_file_chooser_default_list_shortcut_folders (GtkFileChooser *chooser)
       shortcut = col_data;
       list = g_slist_prepend (list, g_object_ref (shortcut));
 
-      if (i != impl->priv->num_shortcuts - 1)
+      if (i != impl->num_shortcuts - 1)
        {
-         if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
+         if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
            g_assert_not_reached ();
        }
     }
@@ -7456,19 +8160,19 @@ gtk_file_chooser_default_get_default_size (GtkFileChooserEmbed *chooser_embed,
 
   find_good_size_from_style (GTK_WIDGET (chooser_embed), default_width, default_height);
 
-  if (impl->priv->preview_widget_active &&
-      impl->priv->preview_widget &&
-      gtk_widget_get_visible (impl->priv->preview_widget))
+  if (impl->preview_widget_active &&
+      impl->preview_widget &&
+      gtk_widget_get_visible (impl->preview_widget))
     {
-      gtk_widget_get_preferred_size (impl->priv->preview_box,
+      gtk_widget_get_preferred_size (impl->preview_box,
                                     &req, NULL);
       *default_width += PREVIEW_HBOX_SPACING + req.width;
     }
 
-  if (impl->priv->extra_widget &&
-      gtk_widget_get_visible (impl->priv->extra_widget))
+  if (impl->extra_widget &&
+      gtk_widget_get_visible (impl->extra_widget))
     {
-      gtk_widget_get_preferred_size (impl->priv->extra_align,
+      gtk_widget_get_preferred_size (impl->extra_align,
                                     &req, NULL);
       *default_height += gtk_box_get_spacing (GTK_BOX (chooser_embed)) + req.height;
     }
@@ -7491,7 +8195,7 @@ switch_folder_foreach_cb (GtkTreeModel      *model,
 
   closure = data;
 
-  closure->file = _gtk_file_system_model_get_file (closure->impl->priv->browse_files_model, iter);
+  closure->file = _gtk_file_system_model_get_file (closure->impl->browse_files_model, iter);
   closure->num_selected++;
 }
 
@@ -7510,7 +8214,7 @@ switch_to_selected_folder (GtkFileChooserDefault *impl)
   closure.file = NULL;
   closure.num_selected = 0;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   gtk_tree_selection_selected_foreach (selection, switch_folder_foreach_cb, &closure);
 
   g_assert (closure.file && closure.num_selected == 1);
@@ -7529,8 +8233,8 @@ get_selected_file_info_from_file_list (GtkFileChooserDefault *impl,
   GtkTreeIter iter;
   GFileInfo *info;
 
-  g_assert (!impl->priv->select_multiple);
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  g_assert (!impl->select_multiple);
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   if (!gtk_tree_selection_get_selected (selection, NULL, &iter))
     {
       *had_selection = FALSE;
@@ -7539,7 +8243,7 @@ get_selected_file_info_from_file_list (GtkFileChooserDefault *impl,
 
   *had_selection = TRUE;
 
-  info = _gtk_file_system_model_get_info (impl->priv->browse_files_model, &iter);
+  info = _gtk_file_system_model_get_info (impl->browse_files_model, &iter);
   return info;
 }
 
@@ -7647,10 +8351,10 @@ confirmation_confirm_get_info_cb (GCancellable *cancellable,
   gboolean should_respond = FALSE;
   struct GetDisplayNameData *data = user_data;
 
-  if (cancellable != data->impl->priv->should_respond_get_info_cancellable)
+  if (cancellable != data->impl->should_respond_get_info_cancellable)
     goto out;
 
-  data->impl->priv->should_respond_get_info_cancellable = NULL;
+  data->impl->should_respond_get_info_cancellable = NULL;
 
   if (cancelled)
     goto out;
@@ -7683,7 +8387,7 @@ should_respond_after_confirm_overwrite (GtkFileChooserDefault *impl,
 {
   GtkFileChooserConfirmation conf;
 
-  if (!impl->priv->do_overwrite_confirmation)
+  if (!impl->do_overwrite_confirmation)
     return TRUE;
 
   conf = GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM;
@@ -7702,11 +8406,11 @@ should_respond_after_confirm_overwrite (GtkFileChooserDefault *impl,
        data->impl = g_object_ref (impl);
        data->file_part = g_strdup (file_part);
 
-       if (impl->priv->should_respond_get_info_cancellable)
-         g_cancellable_cancel (impl->priv->should_respond_get_info_cancellable);
+       if (impl->should_respond_get_info_cancellable)
+         g_cancellable_cancel (impl->should_respond_get_info_cancellable);
 
-       impl->priv->should_respond_get_info_cancellable =
-         _gtk_file_system_get_info (impl->priv->file_system, parent_file,
+       impl->should_respond_get_info_cancellable =
+         _gtk_file_system_get_info (impl->file_system, parent_file,
                                     "standard::display-name",
                                     confirmation_confirm_get_info_cb,
                                     data);
@@ -7744,10 +8448,10 @@ name_entry_get_parent_info_cb (GCancellable *cancellable,
   gboolean cancelled = g_cancellable_is_cancelled (cancellable);
   struct FileExistsData *data = user_data;
 
-  if (cancellable != data->impl->priv->should_respond_get_info_cancellable)
+  if (cancellable != data->impl->should_respond_get_info_cancellable)
     goto out;
 
-  data->impl->priv->should_respond_get_info_cancellable = NULL;
+  data->impl->should_respond_get_info_cancellable = NULL;
 
   set_busy_cursor (data->impl, FALSE);
 
@@ -7761,11 +8465,11 @@ name_entry_get_parent_info_cb (GCancellable *cancellable,
 
   if (parent_is_folder)
     {
-      if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN)
+      if (data->impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
        {
          request_response_and_add_to_recent_list (data->impl); /* even if the file doesn't exist, apps can 
make good use of that (e.g. Emacs) */
        }
-      else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+      else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
         {
           if (data->file_exists_and_is_not_folder)
            {
@@ -7776,7 +8480,7 @@ name_entry_get_parent_info_cb (GCancellable *cancellable,
                * depending on what clients do in the confirm-overwrite
                * signal and this corrupts the pointer
                */
-              file_part = g_strdup (_gtk_file_chooser_entry_get_file_part (GTK_FILE_CHOOSER_ENTRY 
(data->impl->priv->location_entry)));
+              file_part = g_strdup (_gtk_file_chooser_entry_get_file_part (GTK_FILE_CHOOSER_ENTRY 
(data->impl->location_entry)));
              retval = should_respond_after_confirm_overwrite (data->impl, file_part, data->parent_file);
               g_free (file_part);
 
@@ -7786,8 +8490,8 @@ name_entry_get_parent_info_cb (GCancellable *cancellable,
          else
            request_response_and_add_to_recent_list (data->impl);
        }
-      else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
-              || data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+      else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+              || data->impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
         {
          GError *mkdir_error = NULL;
 
@@ -7847,10 +8551,10 @@ file_exists_get_info_cb (GCancellable *cancellable,
   gboolean needs_parent_check = FALSE;
   struct FileExistsData *data = user_data;
 
-  if (cancellable != data->impl->priv->file_exists_get_info_cancellable)
+  if (cancellable != data->impl->file_exists_get_info_cancellable)
     goto out;
 
-  data->impl->priv->file_exists_get_info_cancellable = NULL;
+  data->impl->file_exists_get_info_cancellable = NULL;
 
   set_busy_cursor (data->impl, FALSE);
 
@@ -7860,7 +8564,7 @@ file_exists_get_info_cb (GCancellable *cancellable,
   file_exists = (info != NULL);
   is_folder = (file_exists && _gtk_file_info_consider_as_directory (info));
 
-  if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN)
+  if (data->impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
     {
       if (is_folder)
        change_folder_and_display_error (data->impl, data->file, TRUE);
@@ -7872,7 +8576,7 @@ file_exists_get_info_cb (GCancellable *cancellable,
            needs_parent_check = TRUE; /* file doesn't exist; see if its parent exists */
        }
     }
-  else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+  else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
     {
       if (file_exists && !is_folder)
         {
@@ -7887,7 +8591,7 @@ file_exists_get_info_cb (GCancellable *cancellable,
           needs_parent_check = TRUE;
         }
     }
-  else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
       if (!file_exists)
         {
@@ -7904,7 +8608,7 @@ file_exists_get_info_cb (GCancellable *cancellable,
            error_selecting_folder_over_existing_file_dialog (data->impl, data->file);
        }
     }
-  else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+  else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
     {
       if (is_folder)
        change_folder_and_display_error (data->impl, data->file, TRUE);
@@ -7922,11 +8626,11 @@ file_exists_get_info_cb (GCancellable *cancellable,
     data->file_exists_and_is_not_folder = file_exists && !is_folder;
     data_ownership_taken = TRUE;
 
-    if (data->impl->priv->should_respond_get_info_cancellable)
-      g_cancellable_cancel (data->impl->priv->should_respond_get_info_cancellable);
+    if (data->impl->should_respond_get_info_cancellable)
+      g_cancellable_cancel (data->impl->should_respond_get_info_cancellable);
 
-      data->impl->priv->should_respond_get_info_cancellable =
-       _gtk_file_system_get_info (data->impl->priv->file_system,
+      data->impl->should_respond_get_info_cancellable =
+       _gtk_file_system_get_info (data->impl->file_system,
                                   data->parent_file,
                                   "standard::type",
                                   name_entry_get_parent_info_cb,
@@ -7992,7 +8696,7 @@ add_selection_to_recent_list (GtkFileChooserDefault *impl)
       uri = g_file_get_uri (file);
       if (uri)
        {
-         gtk_recent_manager_add_item (impl->priv->recent_manager, uri);
+         gtk_recent_manager_add_item (impl->recent_manager, uri);
          g_free (uri);
        }
     }
@@ -8018,9 +8722,9 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
 
   current_focus = gtk_window_get_focus (GTK_WINDOW (toplevel));
 
-  if (current_focus == impl->priv->browse_files_tree_view)
+  if (current_focus == impl->browse_files_tree_view)
     {
-      /* The following array encodes what we do based on the impl->priv->action and the
+      /* The following array encodes what we do based on the impl->action and the
        * number of files selected.
        */
       typedef enum {
@@ -8047,17 +8751,17 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
 
     file_list:
 
-      g_assert (impl->priv->action >= GTK_FILE_CHOOSER_ACTION_OPEN && impl->priv->action <= 
GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
+      g_assert (impl->action >= GTK_FILE_CHOOSER_ACTION_OPEN && impl->action <= 
GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
 
-      if (impl->priv->operation_mode == OPERATION_MODE_SEARCH)
+      if (impl->operation_mode == OPERATION_MODE_SEARCH)
        {
          retval = search_should_respond (impl);
          goto out;
        }
 
-      if (impl->priv->operation_mode == OPERATION_MODE_RECENT)
+      if (impl->operation_mode == OPERATION_MODE_RECENT)
        {
-         if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+         if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
            goto save_entry;
          else
            {
@@ -8073,7 +8777,7 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
       else
        k = num_selected;
 
-      action = what_to_do [impl->priv->action] [k];
+      action = what_to_do [impl->action] [k];
 
       switch (action)
        {
@@ -8092,11 +8796,11 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
              switch_to_selected_folder (impl);
              return FALSE;
            }
-         else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+         else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
            {
              retval = should_respond_after_confirm_overwrite (impl,
                                                               get_display_name_from_file_list (impl),
-                                                              impl->priv->current_folder);
+                                                              impl->current_folder);
              goto out;
            }
          else
@@ -8120,7 +8824,7 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
          g_assert_not_reached ();
        }
     }
-  else if ((impl->priv->location_entry != NULL) && (current_focus == impl->priv->location_entry))
+  else if ((impl->location_entry != NULL) && (current_focus == impl->location_entry))
     {
       GFile *file;
       gboolean is_well_formed, is_empty, is_file_part_empty;
@@ -8130,20 +8834,20 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
 
     save_entry:
 
-      g_assert (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
-               || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
-               || ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN
-                    || impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
-                   && impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY));
+      g_assert (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));
 
-      entry = GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry);
+      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_well_formed)
        {
          if (!is_empty
-             && impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
-             && impl->priv->operation_mode == OPERATION_MODE_RECENT)
+             && impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+             && impl->operation_mode == OPERATION_MODE_RECENT)
            {
              path_bar_set_mode (impl, PATH_BAR_ERROR_NO_FOLDER);
 #if 0
@@ -8152,7 +8856,7 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
               * a selection causes the error message from path_bar_set_mode() to go away,
               * but we want the user to see that message!
               */
-             gtk_widget_grab_focus (impl->priv->browse_files_tree_view);
+             gtk_widget_grab_focus (impl->browse_files_tree_view);
 #endif
            }
          /* FIXME: else show an "invalid filename" error as the pathbar mode? */
@@ -8162,11 +8866,11 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
 
       if (is_empty)
         {
-          if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
-             || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+          if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+             || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
            {
              path_bar_set_mode (impl, PATH_BAR_ERROR_NO_FILENAME);
-             gtk_widget_grab_focus (impl->priv->location_entry);
+             gtk_widget_grab_focus (impl->location_entry);
              return FALSE;
            }
 
@@ -8178,13 +8882,13 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
       error = NULL;
       if (is_folder)
        {
-         if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-             impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+         if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+             impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
            {
              change_folder_and_display_error (impl, file, TRUE);
            }
-         else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
-                  impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+         else if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
+                  impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
            {
              /* The folder already exists, so we do not need to create it.
               * Just respond to terminate the dialog.
@@ -8211,11 +8915,11 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
          data->file = g_object_ref (file);
          data->parent_file = _gtk_file_chooser_entry_get_current_folder (entry);
 
-         if (impl->priv->file_exists_get_info_cancellable)
-           g_cancellable_cancel (impl->priv->file_exists_get_info_cancellable);
+         if (impl->file_exists_get_info_cancellable)
+           g_cancellable_cancel (impl->file_exists_get_info_cancellable);
 
-         impl->priv->file_exists_get_info_cancellable =
-           _gtk_file_system_get_info (impl->priv->file_system, file,
+         impl->file_exists_get_info_cancellable =
+           _gtk_file_system_get_info (impl->file_system, file,
                                       "standard::type",
                                       file_exists_get_info_cb,
                                       data);
@@ -8228,19 +8932,19 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
 
       g_object_unref (file);
     }
-  else if (impl->priv->toplevel_last_focus_widget == impl->priv->browse_files_tree_view)
+  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 if (impl->priv->operation_mode == OPERATION_MODE_SEARCH && impl->priv->toplevel_last_focus_widget == 
impl->priv->search_entry)
+  else if (impl->operation_mode == OPERATION_MODE_SEARCH && impl->toplevel_last_focus_widget == 
impl->search_entry)
     {
-      search_entry_activate_cb (GTK_ENTRY (impl->priv->search_entry), impl);
+      search_entry_activate_cb (GTK_ENTRY (impl->search_entry), impl);
       return FALSE;
     }
-  else if (impl->priv->location_entry && impl->priv->toplevel_last_focus_widget == 
impl->priv->location_entry)
+  else if (impl->location_entry && impl->toplevel_last_focus_widget == impl->location_entry)
     {
       /* The focus is on a dialog's action area button, *and* the widget that
        * was focused immediately before it is the location entry.
@@ -8249,8 +8953,8 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
     }
   else
     /* The focus is on a dialog's action area button or something else */
-    if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
-       || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+    if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+       || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
       goto save_entry;
     else
       goto file_list; 
@@ -8272,18 +8976,18 @@ gtk_file_chooser_default_initial_focus (GtkFileChooserEmbed *chooser_embed)
 
   impl = GTK_FILE_CHOOSER_DEFAULT (chooser_embed);
 
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
-      if (impl->priv->location_mode == LOCATION_MODE_PATH_BAR
-         || impl->priv->operation_mode == OPERATION_MODE_RECENT)
-       widget = impl->priv->browse_files_tree_view;
+      if (impl->location_mode == LOCATION_MODE_PATH_BAR
+         || impl->operation_mode == OPERATION_MODE_RECENT)
+       widget = impl->browse_files_tree_view;
       else
-       widget = impl->priv->location_entry;
+       widget = impl->location_entry;
     }
-  else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
-          impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
-    widget = impl->priv->location_entry;
+  else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+          impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+    widget = impl->location_entry;
   else
     {
       g_assert_not_reached ();
@@ -8319,7 +9023,7 @@ search_get_selected_files (GtkFileChooserDefault *impl)
 
   result = NULL;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   gtk_tree_selection_selected_foreach (selection, search_selected_foreach_get_file_cb, &result);
   result = g_slist_reverse (result);
 
@@ -8334,9 +9038,9 @@ search_should_respond (GtkFileChooserDefault *impl)
 {
   GtkTreeSelection *selection;
 
-  g_assert (impl->priv->operation_mode == OPERATION_MODE_SEARCH);
+  g_assert (impl->operation_mode == OPERATION_MODE_SEARCH);
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   return (gtk_tree_selection_count_selected_rows (selection) != 0);
 }
 
@@ -8357,7 +9061,7 @@ search_add_hit (GtkFileChooserDefault *impl,
       return;
     }
 
-  _gtk_file_system_model_add_and_query_file (impl->priv->search_model,
+  _gtk_file_system_model_add_and_query_file (impl->search_model,
                                              file,
                                              MODEL_ATTRIBUTES);
 
@@ -8392,8 +9096,8 @@ search_engine_finished_cb (GtkSearchEngine *engine,
   /* EB: setting the model here will avoid loads of row events,
    * but it'll make the search look like blocked.
    */
-  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
-                           GTK_TREE_MODEL (impl->priv->search_model));
+  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
+                           GTK_TREE_MODEL (impl->search_model));
   file_list_set_sort_column_ids (impl);
 #endif
 
@@ -8434,14 +9138,14 @@ static void
 search_clear_model (GtkFileChooserDefault *impl, 
                    gboolean               remove_from_treeview)
 {
-  if (!impl->priv->search_model)
+  if (!impl->search_model)
     return;
 
-  g_object_unref (impl->priv->search_model);
-  impl->priv->search_model = NULL;
+  g_object_unref (impl->search_model);
+  impl->search_model = NULL;
   
   if (remove_from_treeview)
-    gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), NULL);
+    gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view), NULL);
 }
 
 /* Stops any ongoing searches; does not touch the search_model */
@@ -8449,18 +9153,18 @@ static void
 search_stop_searching (GtkFileChooserDefault *impl,
                        gboolean               remove_query)
 {
-  if (remove_query && impl->priv->search_query)
+  if (remove_query && impl->search_query)
     {
-      g_object_unref (impl->priv->search_query);
-      impl->priv->search_query = NULL;
+      g_object_unref (impl->search_query);
+      impl->search_query = NULL;
     }
   
-  if (impl->priv->search_engine)
+  if (impl->search_engine)
     {
-      _gtk_search_engine_stop (impl->priv->search_engine);
+      _gtk_search_engine_stop (impl->search_engine);
       
-      g_object_unref (impl->priv->search_engine);
-      impl->priv->search_engine = NULL;
+      g_object_unref (impl->search_engine);
+      impl->search_engine = NULL;
     }
 }
 
@@ -8468,21 +9172,21 @@ search_stop_searching (GtkFileChooserDefault *impl,
 static void
 search_setup_model (GtkFileChooserDefault *impl)
 {
-  g_assert (impl->priv->search_model == NULL);
+  g_assert (impl->search_model == NULL);
 
-  impl->priv->search_model = _gtk_file_system_model_new (file_system_model_set,
+  impl->search_model = _gtk_file_system_model_new (file_system_model_set,
                                                    impl,
                                                   MODEL_COLUMN_TYPES);
 
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->search_model),
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->search_model),
                                   MODEL_COL_NAME,
                                   name_sort_func,
                                   impl, NULL);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->search_model),
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->search_model),
                                   MODEL_COL_MTIME,
                                   mtime_sort_func,
                                   impl, NULL);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->search_model),
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->search_model),
                                   MODEL_COL_SIZE,
                                   size_sort_func,
                                   impl, NULL);
@@ -8492,8 +9196,8 @@ search_setup_model (GtkFileChooserDefault *impl)
    * more "alive" than setting the model at the end of the search
    * run
    */
-  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
-                           GTK_TREE_MODEL (impl->priv->search_model));
+  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
+                           GTK_TREE_MODEL (impl->search_model));
   file_list_set_sort_column_ids (impl);
 }
 
@@ -8507,32 +9211,32 @@ search_start_query (GtkFileChooserDefault *impl,
   search_setup_model (impl);
   set_busy_cursor (impl, TRUE);
 
-  if (impl->priv->search_engine == NULL)
-    impl->priv->search_engine = _gtk_search_engine_new ();
+  if (impl->search_engine == NULL)
+    impl->search_engine = _gtk_search_engine_new ();
 
-  if (!impl->priv->search_engine)
+  if (!impl->search_engine)
     {
       set_busy_cursor (impl, FALSE);
       search_error_could_not_create_client (impl); /* lame; we don't get an error code or anything */
       return;
     }
 
-  if (!impl->priv->search_query)
+  if (!impl->search_query)
     {
-      impl->priv->search_query = _gtk_query_new ();
-      _gtk_query_set_text (impl->priv->search_query, query_text);
+      impl->search_query = _gtk_query_new ();
+      _gtk_query_set_text (impl->search_query, query_text);
     }
   
-  _gtk_search_engine_set_query (impl->priv->search_engine, impl->priv->search_query);
+  _gtk_search_engine_set_query (impl->search_engine, impl->search_query);
 
-  g_signal_connect (impl->priv->search_engine, "hits-added",
+  g_signal_connect (impl->search_engine, "hits-added",
                    G_CALLBACK (search_engine_hits_added_cb), impl);
-  g_signal_connect (impl->priv->search_engine, "finished",
+  g_signal_connect (impl->search_engine, "finished",
                    G_CALLBACK (search_engine_finished_cb), impl);
-  g_signal_connect (impl->priv->search_engine, "error",
+  g_signal_connect (impl->search_engine, "error",
                    G_CALLBACK (search_engine_error_cb), impl);
 
-  _gtk_search_engine_start (impl->priv->search_engine);
+  _gtk_search_engine_start (impl->search_engine);
 }
 
 /* Callback used when the user presses Enter while typing on the search
@@ -8547,15 +9251,15 @@ search_entry_activate_cb (GtkEntry *entry,
 
   impl = GTK_FILE_CHOOSER_DEFAULT (data);
 
-  text = gtk_entry_get_text (GTK_ENTRY (impl->priv->search_entry));
+  text = gtk_entry_get_text (GTK_ENTRY (impl->search_entry));
   if (strlen (text) == 0)
     return;
 
   /* reset any existing query object */
-  if (impl->priv->search_query)
+  if (impl->search_query)
     {
-      g_object_unref (impl->priv->search_query);
-      impl->priv->search_query = NULL;
+      g_object_unref (impl->search_query);
+      impl->search_query = NULL;
     }
 
   search_start_query (impl, text);
@@ -8566,11 +9270,11 @@ focus_entry_idle_cb (GtkFileChooserDefault *impl)
 {
   gdk_threads_enter ();
   
-  g_source_destroy (impl->priv->focus_entry_idle);
-  impl->priv->focus_entry_idle = NULL;
+  g_source_destroy (impl->focus_entry_idle);
+  impl->focus_entry_idle = NULL;
 
-  if (impl->priv->search_entry)
-    gtk_widget_grab_focus (impl->priv->search_entry);
+  if (impl->search_entry)
+    gtk_widget_grab_focus (impl->search_entry);
 
   gdk_threads_leave ();
 
@@ -8588,55 +9292,55 @@ focus_search_entry_in_idle (GtkFileChooserDefault *impl)
    * handler.
    */
 
-  if (!impl->priv->focus_entry_idle)
-    impl->priv->focus_entry_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (focus_entry_idle_cb));
+  if (!impl->focus_entry_idle)
+    impl->focus_entry_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (focus_entry_idle_cb));
 }
 
 /* Hides the path bar and creates the search entry */
 static void
 search_setup_widgets (GtkFileChooserDefault *impl)
 {
-  impl->priv->search_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+  impl->search_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
 
   path_bar_update (impl);
 
-  impl->priv->search_entry = gtk_entry_new ();
-  g_signal_connect (impl->priv->search_entry, "activate",
+  impl->search_entry = gtk_entry_new ();
+  g_signal_connect (impl->search_entry, "activate",
                    G_CALLBACK (search_entry_activate_cb),
                    impl);
-  gtk_box_pack_start (GTK_BOX (impl->priv->search_hbox), impl->priv->search_entry, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (impl->search_hbox), impl->search_entry, TRUE, TRUE, 0);
 
   /* if there already is a query, restart it */
-  if (impl->priv->search_query)
+  if (impl->search_query)
     {
-      gchar *query = _gtk_query_get_text (impl->priv->search_query);
+      gchar *query = _gtk_query_get_text (impl->search_query);
 
       if (query)
         {
-          gtk_entry_set_text (GTK_ENTRY (impl->priv->search_entry), query);
+          gtk_entry_set_text (GTK_ENTRY (impl->search_entry), query);
           search_start_query (impl, query);
 
           g_free (query);
         }
       else
         {
-          g_object_unref (impl->priv->search_query);
-          impl->priv->search_query = NULL;
+          g_object_unref (impl->search_query);
+          impl->search_query = NULL;
         }
     }
 
   /* Box for search widgets */
-  gtk_box_pack_start (GTK_BOX (impl->priv->browse_path_bar_hbox), impl->priv->search_hbox, TRUE, TRUE, 0);
-  gtk_widget_show_all (impl->priv->search_hbox);
-  gtk_size_group_add_widget (GTK_SIZE_GROUP (impl->priv->browse_path_bar_size_group), 
impl->priv->search_hbox);
+  gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->search_hbox, TRUE, TRUE, 0);
+  gtk_widget_show_all (impl->search_hbox);
+  gtk_size_group_add_widget (GTK_SIZE_GROUP (impl->browse_path_bar_size_group), impl->search_hbox);
 
   /* Hide the location widgets temporarily */
 
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
-      gtk_widget_hide (impl->priv->location_button);
-      gtk_widget_hide (impl->priv->location_entry_box);
+      gtk_widget_hide (impl->location_button);
+      gtk_widget_hide (impl->location_entry_box);
     }
 
   focus_search_entry_in_idle (impl);
@@ -8653,14 +9357,14 @@ static void
 recent_clear_model (GtkFileChooserDefault *impl,
                     gboolean               remove_from_treeview)
 {
-  if (!impl->priv->recent_model)
+  if (!impl->recent_model)
     return;
 
   if (remove_from_treeview)
-    gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), NULL);
+    gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view), NULL);
 
-  g_object_unref (impl->priv->recent_model);
-  impl->priv->recent_model = NULL;
+  g_object_unref (impl->recent_model);
+  impl->recent_model = NULL;
 }
 
 /* Stops any ongoing loading of the recent files list; does
@@ -8669,33 +9373,33 @@ recent_clear_model (GtkFileChooserDefault *impl,
 static void
 recent_stop_loading (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->load_recent_id)
+  if (impl->load_recent_id)
     {
-      g_source_remove (impl->priv->load_recent_id);
-      impl->priv->load_recent_id = 0;
+      g_source_remove (impl->load_recent_id);
+      impl->load_recent_id = 0;
     }
 }
 
 static void
 recent_setup_model (GtkFileChooserDefault *impl)
 {
-  g_assert (impl->priv->recent_model == NULL);
+  g_assert (impl->recent_model == NULL);
 
-  impl->priv->recent_model = _gtk_file_system_model_new (file_system_model_set,
+  impl->recent_model = _gtk_file_system_model_new (file_system_model_set,
                                                    impl,
                                                   MODEL_COLUMN_TYPES);
 
-  _gtk_file_system_model_set_filter (impl->priv->recent_model,
-                                     impl->priv->current_filter);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->recent_model),
+  _gtk_file_system_model_set_filter (impl->recent_model,
+                                     impl->current_filter);
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->recent_model),
                                   MODEL_COL_NAME,
                                   name_sort_func,
                                   impl, NULL);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->recent_model),
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->recent_model),
                                    MODEL_COL_SIZE,
                                    size_sort_func,
                                    impl, NULL);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->recent_model),
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->recent_model),
                                    MODEL_COL_MTIME,
                                    mtime_sort_func,
                                    impl, NULL);
@@ -8714,14 +9418,14 @@ recent_idle_cleanup (gpointer data)
   RecentLoadData *load_data = data;
   GtkFileChooserDefault *impl = load_data->impl;
 
-  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
-                           GTK_TREE_MODEL (impl->priv->recent_model));
+  gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
+                           GTK_TREE_MODEL (impl->recent_model));
   file_list_set_sort_column_ids (impl);
-  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (impl->priv->recent_model), MODEL_COL_MTIME, 
GTK_SORT_DESCENDING);
+  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (impl->recent_model), MODEL_COL_MTIME, 
GTK_SORT_DESCENDING);
 
   set_busy_cursor (impl, FALSE);
   
-  impl->priv->load_recent_id = 0;
+  impl->load_recent_id = 0;
   
   g_free (load_data);
 }
@@ -8760,7 +9464,7 @@ populate_model_with_recent_items (GtkFileChooserDefault *impl, GList *items)
       GFile *file;
 
       file = g_file_new_for_uri (gtk_recent_info_get_uri (info));
-      _gtk_file_system_model_add_and_query_file (impl->priv->recent_model,
+      _gtk_file_system_model_add_and_query_file (impl->recent_model,
                                                  file,
                                                  MODEL_ATTRIBUTES);
       g_object_unref (file);
@@ -8783,7 +9487,7 @@ populate_model_with_folders (GtkFileChooserDefault *impl, GList *items)
     {
       GFile *folder = l->data;
 
-      _gtk_file_system_model_add_and_query_file (impl->priv->recent_model,
+      _gtk_file_system_model_add_and_query_file (impl->recent_model,
                                                  folder,
                                                  MODEL_ATTRIBUTES);
     }
@@ -8798,14 +9502,14 @@ recent_idle_load (gpointer data)
   RecentLoadData *load_data = data;
   GtkFileChooserDefault *impl = load_data->impl;
 
-  if (!impl->priv->recent_manager)
+  if (!impl->recent_manager)
     return FALSE;
 
-  load_data->items = gtk_recent_manager_get_items (impl->priv->recent_manager);
+  load_data->items = gtk_recent_manager_get_items (impl->recent_manager);
   if (!load_data->items)
     return FALSE;
 
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
     populate_model_with_recent_items (impl, load_data->items);
   else
     populate_model_with_folders (impl, load_data->items);
@@ -8827,14 +9531,14 @@ recent_start_loading (GtkFileChooserDefault *impl)
   recent_setup_model (impl);
   set_busy_cursor (impl, TRUE);
 
-  g_assert (impl->priv->load_recent_id == 0);
+  g_assert (impl->load_recent_id == 0);
 
   load_data = g_new (RecentLoadData, 1);
   load_data->impl = impl;
   load_data->items = NULL;
 
   /* begin lazy loading the recent files into the model */
-  impl->priv->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30,
+  impl->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30,
                                                     recent_idle_load,
                                                     load_data,
                                                     recent_idle_cleanup);
@@ -8864,7 +9568,7 @@ recent_get_selected_files (GtkFileChooserDefault *impl)
 
   result = NULL;
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   gtk_tree_selection_selected_foreach (selection, recent_selected_foreach_get_file_cb, &result);
   result = g_slist_reverse (result);
 
@@ -8879,9 +9583,9 @@ recent_should_respond (GtkFileChooserDefault *impl)
 {
   GtkTreeSelection *selection;
 
-  g_assert (impl->priv->operation_mode == OPERATION_MODE_RECENT);
+  g_assert (impl->operation_mode == OPERATION_MODE_RECENT);
 
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   return (gtk_tree_selection_count_selected_rows (selection) != 0);
 }
 
@@ -8889,44 +9593,44 @@ static void
 set_current_filter (GtkFileChooserDefault *impl,
                    GtkFileFilter         *filter)
 {
-  if (impl->priv->current_filter != filter)
+  if (impl->current_filter != filter)
     {
       int filter_index;
 
       /* NULL filters are allowed to reset to non-filtered status
        */
-      filter_index = g_slist_index (impl->priv->filters, filter);
-      if (impl->priv->filters && filter && filter_index < 0)
+      filter_index = g_slist_index (impl->filters, filter);
+      if (impl->filters && filter && filter_index < 0)
        return;
 
-      if (impl->priv->current_filter)
-       g_object_unref (impl->priv->current_filter);
-      impl->priv->current_filter = filter;
-      if (impl->priv->current_filter)
+      if (impl->current_filter)
+       g_object_unref (impl->current_filter);
+      impl->current_filter = filter;
+      if (impl->current_filter)
        {
-         g_object_ref_sink (impl->priv->current_filter);
+         g_object_ref_sink (impl->current_filter);
        }
 
-      if (impl->priv->filters)
-       gtk_combo_box_set_active (GTK_COMBO_BOX (impl->priv->filter_combo),
+      if (impl->filters)
+       gtk_combo_box_set_active (GTK_COMBO_BOX (impl->filter_combo),
                                  filter_index);
 
-      if (impl->priv->browse_files_model)
+      if (impl->browse_files_model)
         {
-          _gtk_file_system_model_set_filter (impl->priv->browse_files_model, impl->priv->current_filter);
-          _gtk_file_system_model_clear_cache (impl->priv->browse_files_model, MODEL_COL_IS_SENSITIVE);
+          _gtk_file_system_model_set_filter (impl->browse_files_model, impl->current_filter);
+          _gtk_file_system_model_clear_cache (impl->browse_files_model, MODEL_COL_IS_SENSITIVE);
         }
 
-      if (impl->priv->search_model)
+      if (impl->search_model)
         {
-          _gtk_file_system_model_set_filter (impl->priv->search_model, filter);
-          _gtk_file_system_model_clear_cache (impl->priv->search_model, MODEL_COL_IS_SENSITIVE);
+          _gtk_file_system_model_set_filter (impl->search_model, filter);
+          _gtk_file_system_model_clear_cache (impl->search_model, MODEL_COL_IS_SENSITIVE);
         }
 
-      if (impl->priv->recent_model)
+      if (impl->recent_model)
         {
-          _gtk_file_system_model_set_filter (impl->priv->recent_model, filter);
-          _gtk_file_system_model_clear_cache (impl->priv->recent_model, MODEL_COL_IS_SENSITIVE);
+          _gtk_file_system_model_set_filter (impl->recent_model, filter);
+          _gtk_file_system_model_clear_cache (impl->recent_model, MODEL_COL_IS_SENSITIVE);
         }
 
       g_object_notify (G_OBJECT (impl), "filter");
@@ -8938,7 +9642,7 @@ filter_combo_changed (GtkComboBox           *combo_box,
                      GtkFileChooserDefault *impl)
 {
   gint new_index = gtk_combo_box_get_active (combo_box);
-  GtkFileFilter *new_filter = g_slist_nth_data (impl->priv->filters, new_index);
+  GtkFileFilter *new_filter = g_slist_nth_data (impl->filters, new_index);
 
   set_current_filter (impl, new_filter);
 }
@@ -8951,8 +9655,8 @@ check_preview_change (GtkFileChooserDefault *impl)
   char *new_display_name;
   GtkTreeModel *model;
 
-  gtk_tree_view_get_cursor (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), &cursor_path, NULL);
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+  gtk_tree_view_get_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view), &cursor_path, NULL);
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view));
   if (cursor_path)
     {
       GtkTreeIter iter;
@@ -8971,30 +9675,30 @@ check_preview_change (GtkFileChooserDefault *impl)
       new_display_name = NULL;
     }
 
-  if (new_file != impl->priv->preview_file &&
-      !(new_file && impl->priv->preview_file &&
-       g_file_equal (new_file, impl->priv->preview_file)))
+  if (new_file != impl->preview_file &&
+      !(new_file && impl->preview_file &&
+       g_file_equal (new_file, impl->preview_file)))
     {
-      if (impl->priv->preview_file)
+      if (impl->preview_file)
        {
-         g_object_unref (impl->priv->preview_file);
-         g_free (impl->priv->preview_display_name);
+         g_object_unref (impl->preview_file);
+         g_free (impl->preview_display_name);
        }
 
       if (new_file)
        {
-         impl->priv->preview_file = new_file;
-         impl->priv->preview_display_name = new_display_name;
+         impl->preview_file = new_file;
+         impl->preview_display_name = new_display_name;
        }
       else
        {
-         impl->priv->preview_file = NULL;
-         impl->priv->preview_display_name = NULL;
+         impl->preview_file = NULL;
+         impl->preview_display_name = NULL;
           g_free (new_display_name);
        }
 
-      if (impl->priv->use_preview_label && impl->priv->preview_label)
-       gtk_label_set_text (GTK_LABEL (impl->priv->preview_label), impl->priv->preview_display_name);
+      if (impl->use_preview_label && impl->preview_label)
+       gtk_label_set_text (GTK_LABEL (impl->preview_label), impl->preview_display_name);
 
       g_signal_emit_by_name (impl, "update-preview");
     }
@@ -9017,10 +9721,10 @@ shortcuts_activate_volume_mount_cb (GCancellable        *cancellable,
   gboolean cancelled = g_cancellable_is_cancelled (cancellable);
   GtkFileChooserDefault *impl = data;
 
-  if (cancellable != impl->priv->shortcuts_activate_iter_cancellable)
+  if (cancellable != impl->shortcuts_activate_iter_cancellable)
     goto out;
 
-  impl->priv->shortcuts_activate_iter_cancellable = NULL;
+  impl->shortcuts_activate_iter_cancellable = NULL;
 
   set_busy_cursor (impl, FALSE);
 
@@ -9081,8 +9785,8 @@ shortcuts_activate_volume (GtkFileChooserDefault *impl,
       set_busy_cursor (impl, TRUE);
    
       mount_op = gtk_mount_operation_new (get_toplevel (GTK_WIDGET (impl)));
-      impl->priv->shortcuts_activate_iter_cancellable =
-        _gtk_file_system_mount_volume (impl->priv->file_system, volume, mount_op,
+      impl->shortcuts_activate_iter_cancellable =
+        _gtk_file_system_mount_volume (impl->file_system, volume, mount_op,
                                       shortcuts_activate_volume_mount_cb,
                                       g_object_ref (impl));
       g_object_unref (mount_op);
@@ -9116,10 +9820,10 @@ shortcuts_activate_get_info_cb (GCancellable *cancellable,
   gboolean cancelled = g_cancellable_is_cancelled (cancellable);
   struct ShortcutsActivateData *data = user_data;
 
-  if (cancellable != data->impl->priv->shortcuts_activate_iter_cancellable)
+  if (cancellable != data->impl->shortcuts_activate_iter_cancellable)
     goto out;
 
-  data->impl->priv->shortcuts_activate_iter_cancellable = NULL;
+  data->impl->shortcuts_activate_iter_cancellable = NULL;
 
   if (cancelled)
     goto out;
@@ -9158,8 +9862,8 @@ shortcuts_activate_mount_enclosing_volume (GCancellable        *cancellable,
       return;
     }
 
-  data->impl->priv->shortcuts_activate_iter_cancellable =
-    _gtk_file_system_get_info (data->impl->priv->file_system, data->file,
+  data->impl->shortcuts_activate_iter_cancellable =
+    _gtk_file_system_get_info (data->impl->file_system, data->file,
                               "standard::type",
                               shortcuts_activate_get_info_cb, data);
 
@@ -9177,20 +9881,20 @@ shortcuts_activate_iter (GtkFileChooserDefault *impl,
   /* In the Save modes, we want to preserve what the uesr typed in the filename
    * entry, so that he may choose another folder without erasing his typed name.
    */
-  if (impl->priv->location_entry
-      && !(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
-          || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
-    gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), "");
+  if (impl->location_entry
+      && !(impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+          || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
+    gtk_entry_set_text (GTK_ENTRY (impl->location_entry), "");
 
-  gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), iter,
+  gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), iter,
                      SHORTCUTS_COL_DATA, &col_data,
                      SHORTCUTS_COL_TYPE, &shortcut_type,
                      -1);
 
-  if (impl->priv->shortcuts_activate_iter_cancellable)
+  if (impl->shortcuts_activate_iter_cancellable)
     {
-      g_cancellable_cancel (impl->priv->shortcuts_activate_iter_cancellable);
-      impl->priv->shortcuts_activate_iter_cancellable = NULL;
+      g_cancellable_cancel (impl->shortcuts_activate_iter_cancellable);
+      impl->shortcuts_activate_iter_cancellable = NULL;
     }
 
   if (shortcut_type == SHORTCUT_TYPE_SEPARATOR)
@@ -9212,7 +9916,7 @@ shortcuts_activate_iter (GtkFileChooserDefault *impl,
 
       operation_mode_set (impl, OPERATION_MODE_BROWSE);
 
-      volume = _gtk_file_system_get_volume_for_file (impl->priv->file_system, col_data);
+      volume = _gtk_file_system_get_volume_for_file (impl->file_system, col_data);
 
       data = g_new0 (struct ShortcutsActivateData, 1);
       data->impl = g_object_ref (impl);
@@ -9227,16 +9931,16 @@ shortcuts_activate_iter (GtkFileChooserDefault *impl,
 
          mount_operation = gtk_mount_operation_new (GTK_WINDOW (toplevel));
 
-         impl->priv->shortcuts_activate_iter_cancellable =
-           _gtk_file_system_mount_enclosing_volume (impl->priv->file_system, col_data,
+         impl->shortcuts_activate_iter_cancellable =
+           _gtk_file_system_mount_enclosing_volume (impl->file_system, col_data,
                                                     mount_operation,
                                                     shortcuts_activate_mount_enclosing_volume,
                                                     data);
        }
       else
        {
-         impl->priv->shortcuts_activate_iter_cancellable =
-           _gtk_file_system_get_info (impl->priv->file_system, data->file,
+         impl->shortcuts_activate_iter_cancellable =
+           _gtk_file_system_get_info (impl->file_system, data->file,
                                       "standard::type",
                                       shortcuts_activate_get_info_cb, data);
        }
@@ -9263,7 +9967,7 @@ shortcuts_key_press_event_cb (GtkWidget             *widget,
 
   if (key_is_left_or_right (event))
     {
-      gtk_widget_grab_focus (impl->priv->browse_files_tree_view);
+      gtk_widget_grab_focus (impl->browse_files_tree_view);
       return TRUE;
     }
 
@@ -9297,10 +10001,10 @@ shortcuts_select_func  (GtkTreeSelection  *selection,
   GtkTreeIter filter_iter;
   ShortcutType shortcut_type;
 
-  if (!gtk_tree_model_get_iter (impl->priv->shortcuts_pane_filter_model, &filter_iter, path))
+  if (!gtk_tree_model_get_iter (impl->shortcuts_pane_filter_model, &filter_iter, path))
     g_assert_not_reached ();
 
-  gtk_tree_model_get (impl->priv->shortcuts_pane_filter_model, &filter_iter, SHORTCUTS_COL_TYPE, 
&shortcut_type, -1);
+  gtk_tree_model_get (impl->shortcuts_pane_filter_model, &filter_iter, SHORTCUTS_COL_TYPE, &shortcut_type, 
-1);
 
   return shortcut_type != SHORTCUT_TYPE_SEPARATOR;
 }
@@ -9314,8 +10018,8 @@ list_select_func  (GtkTreeSelection  *selection,
 {
   GtkFileChooserDefault *impl = data;
 
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
     {
       GtkTreeIter iter;
       gboolean is_sensitive;
@@ -9339,8 +10043,8 @@ list_selection_changed (GtkTreeSelection      *selection,
                        GtkFileChooserDefault *impl)
 {
   /* See if we are in the new folder editable row for Save mode */
-  if (impl->priv->operation_mode == OPERATION_MODE_BROWSE &&
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+  if (impl->operation_mode == OPERATION_MODE_BROWSE &&
+      impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
     {
       GFileInfo *info;
       gboolean had_selection;
@@ -9355,7 +10059,7 @@ list_selection_changed (GtkTreeSelection      *selection,
 
  out:
 
-  if (impl->priv->location_entry)
+  if (impl->location_entry)
     update_chooser_entry (impl);
 
   path_bar_update (impl);
@@ -9397,8 +10101,8 @@ list_row_activated (GtkTreeView           *tree_view,
       goto out;
     }
 
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
     g_signal_emit_by_name (impl, "file-activated");
 
  out:
@@ -9438,7 +10142,7 @@ update_cell_renderer_attributes (GtkFileChooserDefault *impl)
   /* Keep the following column numbers in sync with create_file_list() */
 
   /* name */
-  column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), 0);
+  column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_files_tree_view), 0);
   list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
   for (walk = list; walk; walk = walk->next)
     {
@@ -9462,7 +10166,7 @@ update_cell_renderer_attributes (GtkFileChooserDefault *impl)
   g_list_free (list);
 
   /* size */
-  column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), 1);
+  column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_files_tree_view), 1);
   list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
   renderer = list->data;
   gtk_tree_view_column_set_attributes (column, renderer, 
@@ -9473,7 +10177,7 @@ update_cell_renderer_attributes (GtkFileChooserDefault *impl)
   g_list_free (list);
 
   /* mtime */
-  column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), 2);
+  column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_files_tree_view), 2);
   list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
   renderer = list->data;
   gtk_tree_view_column_set_attributes (column, renderer, 
@@ -9493,34 +10197,34 @@ static void
 location_set_user_text (GtkFileChooserDefault *impl,
                        const gchar           *path)
 {
-  gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), path);
-  gtk_editable_set_position (GTK_EDITABLE (impl->priv->location_entry), -1);
+  gtk_entry_set_text (GTK_ENTRY (impl->location_entry), path);
+  gtk_editable_set_position (GTK_EDITABLE (impl->location_entry), -1);
 }
 
 static void
 location_popup_handler (GtkFileChooserDefault *impl,
                        const gchar           *path)
 { 
-  if (impl->priv->operation_mode != OPERATION_MODE_BROWSE)
+  if (impl->operation_mode != OPERATION_MODE_BROWSE)
     {
       GtkWidget *widget_to_focus;
 
       operation_mode_set (impl, OPERATION_MODE_BROWSE);
       
-      if (impl->priv->current_folder)
-        change_folder_and_display_error (impl, impl->priv->current_folder, FALSE);
+      if (impl->current_folder)
+        change_folder_and_display_error (impl, impl->current_folder, FALSE);
 
-      if (impl->priv->location_mode == LOCATION_MODE_PATH_BAR)
-        widget_to_focus = impl->priv->browse_files_tree_view;
+      if (impl->location_mode == LOCATION_MODE_PATH_BAR)
+        widget_to_focus = impl->browse_files_tree_view;
       else
-        widget_to_focus = impl->priv->location_entry;
+        widget_to_focus = impl->location_entry;
 
       gtk_widget_grab_focus (widget_to_focus);
       return; 
     }
   
-  if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-      impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+      impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
     {
       if (!path)
        return;
@@ -9528,10 +10232,10 @@ location_popup_handler (GtkFileChooserDefault *impl,
       location_mode_set (impl, LOCATION_MODE_FILENAME_ENTRY, TRUE);
       location_set_user_text (impl, path);
     }
-  else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
-          impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+  else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+          impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
     {
-      gtk_widget_grab_focus (impl->priv->location_entry);
+      gtk_widget_grab_focus (impl->location_entry);
       if (path != NULL)
        location_set_user_text (impl, path);
     }
@@ -9543,14 +10247,14 @@ location_popup_handler (GtkFileChooserDefault *impl,
 static void
 up_folder_handler (GtkFileChooserDefault *impl)
 {
-  _gtk_path_bar_up (GTK_PATH_BAR (impl->priv->browse_path_bar));
+  _gtk_path_bar_up (GTK_PATH_BAR (impl->browse_path_bar));
 }
 
 /* Handler for the "down-folder" keybinding signal */
 static void
 down_folder_handler (GtkFileChooserDefault *impl)
 {
-  _gtk_path_bar_down (GTK_PATH_BAR (impl->priv->browse_path_bar));
+  _gtk_path_bar_down (GTK_PATH_BAR (impl->browse_path_bar));
 }
 
 /* Switches to the shortcut in the specified index */
@@ -9560,7 +10264,7 @@ switch_to_shortcut (GtkFileChooserDefault *impl,
 {
   GtkTreeIter iter;
 
-  if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, NULL, pos))
+  if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->shortcuts_model), &iter, NULL, pos))
     g_assert_not_reached ();
 
   shortcuts_activate_iter (impl, &iter);
@@ -9570,7 +10274,7 @@ switch_to_shortcut (GtkFileChooserDefault *impl,
 static void
 home_folder_handler (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->has_home)
+  if (impl->has_home)
     switch_to_shortcut (impl, shortcuts_get_index (impl, SHORTCUTS_HOME));
 }
 
@@ -9578,7 +10282,7 @@ home_folder_handler (GtkFileChooserDefault *impl)
 static void
 desktop_folder_handler (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->has_desktop)
+  if (impl->has_desktop)
     switch_to_shortcut (impl, shortcuts_get_index (impl, SHORTCUTS_DESKTOP));
 }
 
@@ -9586,15 +10290,15 @@ desktop_folder_handler (GtkFileChooserDefault *impl)
 static void
 search_shortcut_handler (GtkFileChooserDefault *impl)
 {
-  if (impl->priv->has_search)
+  if (impl->has_search)
     {
       switch_to_shortcut (impl, shortcuts_get_index (impl, SHORTCUTS_SEARCH));
 
       /* we want the entry widget to grab the focus the first
        * time, not the browse_files_tree_view widget.
        */
-      if (impl->priv->search_entry)
-        gtk_widget_grab_focus (impl->priv->search_entry);
+      if (impl->search_entry)
+        gtk_widget_grab_focus (impl->search_entry);
     }
 }
 
@@ -9612,13 +10316,13 @@ quick_bookmark_handler (GtkFileChooserDefault *impl,
   int bookmark_pos;
   GtkTreePath *path;
 
-  if (bookmark_index < 0 || bookmark_index >= impl->priv->num_bookmarks)
+  if (bookmark_index < 0 || bookmark_index >= impl->num_bookmarks)
     return;
 
   bookmark_pos = shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS) + bookmark_index;
 
   path = gtk_tree_path_new_from_indices (bookmark_pos, -1);
-  gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
+  gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
                                path, NULL,
                                FALSE, 0.0, 0.0);
   gtk_tree_path_free (path);
@@ -9630,13 +10334,13 @@ static void
 show_hidden_handler (GtkFileChooserDefault *impl)
 {
   g_object_set (impl,
-               "show-hidden", !impl->priv->show_hidden,
+               "show-hidden", !impl->show_hidden,
                NULL);
 }
 
-/********************************************************************
- *                     ShortcutsPaneModelFilter                     *
- ********************************************************************/
+
+/* Drag and drop interfaces */
+
 static void
 _shortcuts_pane_model_filter_class_init (ShortcutsPaneModelFilterClass *class)
 {
@@ -9662,7 +10366,7 @@ shortcuts_pane_model_filter_row_draggable (GtkTreeDragSource *drag_source,
   pos = *gtk_tree_path_get_indices (path);
   bookmarks_pos = shortcuts_get_index (model->impl, SHORTCUTS_BOOKMARKS);
 
-  return (pos >= bookmarks_pos && pos < bookmarks_pos + model->impl->priv->num_bookmarks);
+  return (pos >= bookmarks_pos && pos < bookmarks_pos + model->impl->num_bookmarks);
 }
 
 /* GtkTreeDragSource::drag_data_get implementation for the shortcuts
@@ -9696,461 +10400,20 @@ shortcuts_pane_model_filter_drag_dest_iface_init (GtkTreeDragDestIface *iface)
 }
 #endif
 
-/********************************************************************
- *                    Class/Instance Initializer                    *
- ********************************************************************/
-static void
-_gtk_file_chooser_default_class_init (GtkFileChooserDefaultClass *class)
+static GtkTreeModel *
+shortcuts_pane_model_filter_new (GtkFileChooserDefault *impl,
+                                GtkTreeModel          *child_model,
+                                GtkTreePath           *root)
 {
-  static const guint quick_bookmark_keyvals[10] = {
-    GDK_KEY_1, GDK_KEY_2, GDK_KEY_3, GDK_KEY_4, GDK_KEY_5, GDK_KEY_6, GDK_KEY_7, GDK_KEY_8, GDK_KEY_9, 
GDK_KEY_0
-  };
-  GObjectClass *gobject_class = G_OBJECT_CLASS (class);
-  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
-  GtkBindingSet *binding_set;
-  int i;
-
-  gobject_class->finalize = gtk_file_chooser_default_finalize;
-  gobject_class->constructor = gtk_file_chooser_default_constructor;
-  gobject_class->set_property = gtk_file_chooser_default_set_property;
-  gobject_class->get_property = gtk_file_chooser_default_get_property;
-  gobject_class->dispose = gtk_file_chooser_default_dispose;
-
-  widget_class->show_all = gtk_file_chooser_default_show_all;
-  widget_class->realize = gtk_file_chooser_default_realize;
-  widget_class->map = gtk_file_chooser_default_map;
-  widget_class->unmap = gtk_file_chooser_default_unmap;
-  widget_class->hierarchy_changed = gtk_file_chooser_default_hierarchy_changed;
-  widget_class->style_updated = gtk_file_chooser_default_style_updated;
-  widget_class->screen_changed = gtk_file_chooser_default_screen_changed;
-
-  signals[LOCATION_POPUP] =
-    g_signal_new_class_handler (I_("location-popup"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (location_popup_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__STRING,
-                                G_TYPE_NONE, 1, G_TYPE_STRING);
-
-  signals[LOCATION_POPUP_ON_PASTE] =
-    g_signal_new_class_handler (I_("location-popup-on-paste"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (location_popup_on_paste_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  signals[LOCATION_TOGGLE_POPUP] =
-    g_signal_new_class_handler (I_("location-toggle-popup"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (location_toggle_popup_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  signals[UP_FOLDER] =
-    g_signal_new_class_handler (I_("up-folder"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (up_folder_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  signals[DOWN_FOLDER] =
-    g_signal_new_class_handler (I_("down-folder"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (down_folder_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  signals[HOME_FOLDER] =
-    g_signal_new_class_handler (I_("home-folder"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (home_folder_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  signals[DESKTOP_FOLDER] =
-    g_signal_new_class_handler (I_("desktop-folder"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (desktop_folder_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  signals[QUICK_BOOKMARK] =
-    g_signal_new_class_handler (I_("quick-bookmark"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (quick_bookmark_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__INT,
-                                G_TYPE_NONE, 1, G_TYPE_INT);
-
-  signals[SHOW_HIDDEN] =
-    g_signal_new_class_handler (I_("show-hidden"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (show_hidden_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  signals[SEARCH_SHORTCUT] =
-    g_signal_new_class_handler (I_("search-shortcut"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (search_shortcut_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  signals[RECENT_SHORTCUT] =
-    g_signal_new_class_handler (I_("recent-shortcut"),
-                                G_OBJECT_CLASS_TYPE (class),
-                                G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                                G_CALLBACK (recent_shortcut_handler),
-                                NULL, NULL,
-                                _gtk_marshal_VOID__VOID,
-                                G_TYPE_NONE, 0);
-
-  binding_set = gtk_binding_set_by_class (class);
-
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_l, GDK_CONTROL_MASK,
-                               "location-toggle-popup",
-                               0);
-
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_slash, 0,
-                               "location-popup",
-                               1, G_TYPE_STRING, "/");
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_KP_Divide, 0,
-                               "location-popup",
-                               1, G_TYPE_STRING, "/");
-
-#ifdef G_OS_UNIX
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_asciitilde, 0,
-                               "location-popup",
-                               1, G_TYPE_STRING, "~");
-#endif
-
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_v, GDK_CONTROL_MASK,
-                               "location-popup-on-paste",
-                               0);
-
-  add_normal_and_shifted_binding (binding_set,
-                                 GDK_KEY_Up, GDK_MOD1_MASK,
-                                 "up-folder");
-
-  add_normal_and_shifted_binding (binding_set,
-                                 GDK_KEY_KP_Up, GDK_MOD1_MASK,
-                                 "up-folder");
-
-  add_normal_and_shifted_binding (binding_set,
-                                 GDK_KEY_Down, GDK_MOD1_MASK,
-                                 "down-folder");
-  add_normal_and_shifted_binding (binding_set,
-                                 GDK_KEY_KP_Down, GDK_MOD1_MASK,
-                                 "down-folder");
-
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_Home, GDK_MOD1_MASK,
-                               "home-folder",
-                               0);
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_KP_Home, GDK_MOD1_MASK,
-                               "home-folder",
-                               0);
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_d, GDK_MOD1_MASK,
-                               "desktop-folder",
-                               0);
-  gtk_binding_entry_add_signal (binding_set,
-                               GDK_KEY_h, GDK_CONTROL_MASK,
-                                "show-hidden",
-                                0);
-  gtk_binding_entry_add_signal (binding_set,
-                                GDK_KEY_s, GDK_MOD1_MASK,
-                                "search-shortcut",
-                                0);
-  gtk_binding_entry_add_signal (binding_set,
-                                GDK_KEY_r, GDK_MOD1_MASK,
-                                "recent-shortcut",
-                                0);
-
-  for (i = 0; i < 10; i++)
-    gtk_binding_entry_add_signal (binding_set,
-                                 quick_bookmark_keyvals[i], GDK_MOD1_MASK,
-                                 "quick-bookmark",
-                                 1, G_TYPE_INT, i);
-
-  _gtk_file_chooser_install_properties (gobject_class);
-
-  g_type_class_add_private (gobject_class, sizeof (GtkFileChooserDefaultPrivate));
-
-  /* Bind class to template
-   */
-  gtk_widget_class_set_template_from_resource (widget_class,
-                                              "/org/gtk/libgtk/gtkfilechooserdefault.ui");
-
-  /* A *lot* of widgets that we need to handle .... */
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_shortcuts_toolbar);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_shortcuts_swin);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_widgets_box);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_widgets_hpaned);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_header_box);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_shortcuts_tree_view);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_widgets_box);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_shortcuts_add_button);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_shortcuts_remove_button);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_files_tree_view);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_new_folder_button);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_path_bar_hbox);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_path_bar_size_group);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_path_bar);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_special_mode_icon);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_special_mode_label);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_select_a_folder_info_bar);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_select_a_folder_label);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, browse_select_a_folder_icon);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, filter_combo_hbox);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, filter_combo);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, preview_box);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, extra_align);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, location_button);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, location_entry_box);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, location_label);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, shortcuts_model);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, shortcuts_pane_filter_model);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, list_name_column);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, list_pixbuf_renderer);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, list_name_renderer);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, list_mtime_column);
-  gtk_widget_class_bind_child (widget_class, GtkFileChooserDefaultPrivate, list_size_column);
-
-  /* And a *lot* of callbacks to bind ... */
-  gtk_widget_class_bind_callback (widget_class, shortcuts_key_press_event_after_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_key_press_event_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_drag_drop_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_drag_data_received_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_drag_data_delete_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_drag_end_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_popup_menu_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_query_tooltip_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_button_press_event_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_drag_motion_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_drag_leave_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_drag_begin_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_selection_changed_cb);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_editing_canceled);
-  gtk_widget_class_bind_callback (widget_class, shortcuts_edited);
-  gtk_widget_class_bind_callback (widget_class, add_bookmark_button_clicked_cb);
-  gtk_widget_class_bind_callback (widget_class, remove_bookmark_button_clicked_cb);
-  gtk_widget_class_bind_callback (widget_class, browse_files_key_press_event_cb);
-  gtk_widget_class_bind_callback (widget_class, file_list_drag_drop_cb);
-  gtk_widget_class_bind_callback (widget_class, file_list_drag_data_received_cb);
-  gtk_widget_class_bind_callback (widget_class, list_popup_menu_cb);
-  gtk_widget_class_bind_callback (widget_class, file_list_query_tooltip_cb);
-  gtk_widget_class_bind_callback (widget_class, list_button_press_event_cb);
-  gtk_widget_class_bind_callback (widget_class, list_row_activated);
-  gtk_widget_class_bind_callback (widget_class, file_list_drag_motion_cb);
-  gtk_widget_class_bind_callback (widget_class, list_selection_changed);
-  gtk_widget_class_bind_callback (widget_class, renderer_editing_canceled_cb);
-  gtk_widget_class_bind_callback (widget_class, renderer_edited_cb);
-  gtk_widget_class_bind_callback (widget_class, filter_combo_changed);
-  gtk_widget_class_bind_callback (widget_class, location_button_toggled_cb);
-  gtk_widget_class_bind_callback (widget_class, new_folder_button_clicked);
-  gtk_widget_class_bind_callback (widget_class, path_bar_clicked);
-}
-
-static void
-gtk_file_chooser_default_iface_init (GtkFileChooserIface *iface)
-{
-  iface->select_file = gtk_file_chooser_default_select_file;
-  iface->unselect_file = gtk_file_chooser_default_unselect_file;
-  iface->select_all = gtk_file_chooser_default_select_all;
-  iface->unselect_all = gtk_file_chooser_default_unselect_all;
-  iface->get_files = gtk_file_chooser_default_get_files;
-  iface->get_preview_file = gtk_file_chooser_default_get_preview_file;
-  iface->get_file_system = gtk_file_chooser_default_get_file_system;
-  iface->set_current_folder = gtk_file_chooser_default_set_current_folder;
-  iface->get_current_folder = gtk_file_chooser_default_get_current_folder;
-  iface->set_current_name = gtk_file_chooser_default_set_current_name;
-  iface->add_filter = gtk_file_chooser_default_add_filter;
-  iface->remove_filter = gtk_file_chooser_default_remove_filter;
-  iface->list_filters = gtk_file_chooser_default_list_filters;
-  iface->add_shortcut_folder = gtk_file_chooser_default_add_shortcut_folder;
-  iface->remove_shortcut_folder = gtk_file_chooser_default_remove_shortcut_folder;
-  iface->list_shortcut_folders = gtk_file_chooser_default_list_shortcut_folders;
-}
-
-static void
-gtk_file_chooser_embed_default_iface_init (GtkFileChooserEmbedIface *iface)
-{
-  iface->get_default_size = gtk_file_chooser_default_get_default_size;
-  iface->should_respond = gtk_file_chooser_default_should_respond;
-  iface->initial_focus = gtk_file_chooser_default_initial_focus;
-}
-
-static void
-post_process_ui (GtkFileChooserDefault *impl)
-{
-  GtkTreeSelection *selection;
-  GtkStyleContext  *context;
-  GtkCellRenderer  *cell;
-  GList            *cells;
-
-  /* Target types for dragging a row to/from the shortcuts list */
-  const GtkTargetEntry tree_model_row_targets[] = {
-    { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, GTK_TREE_MODEL_ROW }
-  };
-
-  /* Shortcuts model needs a pointer back to the 'impl' */
-  SHORTCUTS_PANE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model)->impl = impl;
-
-  /* Some qdata, qdata can't be set with GtkBuilder */
-#ifdef PROFILE_FILE_CHOOSER
-  g_object_set_data (G_OBJECT (impl->priv->browse_shortcuts_tree_view), "fmq-name", "shortcuts");
-  g_object_set_data (G_OBJECT (impl->priv->browse_files_tree_view), "fmq-name", "file_list");
-#endif
-  g_object_set_data (G_OBJECT (impl->priv->browse_files_tree_view), I_("GtkFileChooserDefault"), impl);
-
-  /* Setup Places and File List Treeviews
-   */
-  gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
-                                         GDK_BUTTON1_MASK,
-                                         tree_model_row_targets,
-                                         G_N_ELEMENTS (tree_model_row_targets),
-                                         GDK_ACTION_MOVE);
-
-  gtk_drag_dest_set (impl->priv->browse_shortcuts_tree_view,
-                    GTK_DEST_DEFAULT_ALL,
-                    tree_model_row_targets,
-                    G_N_ELEMENTS (tree_model_row_targets),
-                    GDK_ACTION_COPY | GDK_ACTION_MOVE);
-  gtk_drag_dest_add_uri_targets (impl->priv->browse_shortcuts_tree_view);
-
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
-  gtk_tree_selection_set_select_function (selection,
-                                         list_select_func,
-                                         impl, NULL);
-  gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
-                                         GDK_BUTTON1_MASK,
-                                         NULL, 0,
-                                         GDK_ACTION_COPY | GDK_ACTION_MOVE);
-  gtk_drag_source_add_uri_targets (impl->priv->browse_files_tree_view);
-
-
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view));
-  gtk_tree_selection_set_select_function (selection,
-                                         shortcuts_select_func,
-                                         impl, NULL);
-
-  gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
-                                       shortcuts_row_separator_func,
-                                       NULL, NULL);
-
-  gtk_drag_dest_set (impl->priv->browse_files_tree_view,
-                     GTK_DEST_DEFAULT_ALL,
-                     NULL, 0,
-                     GDK_ACTION_COPY | GDK_ACTION_MOVE);
-  gtk_drag_dest_add_uri_targets (impl->priv->browse_files_tree_view);
-
-  /* GtkStyleContext 'junctions' cannot be set with GtkBuilder */
-  context = gtk_widget_get_style_context (impl->priv->browse_shortcuts_swin);
-  gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM);
-
-  context = gtk_widget_get_style_context (impl->priv->browse_shortcuts_toolbar);
-  gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
-
-  /* File browser treemodel columns are shared between GtkFileChooser implementations,
-   * so we don't set cell renderer attributes in GtkBuilder, but rather keep that
-   * in code.
-   */
-  file_list_set_sort_column_ids (impl);
-  update_cell_renderer_attributes (impl);
-
-  /* Get the combo's text renderer and set ellipsize parameters,
-   * perhaps GtkComboBoxText should declare the cell renderer
-   * as an 'internal-child', then we could configure it in GtkBuilder
-   * instead of hard coding it here.
-   */
-  cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (impl->priv->filter_combo));
-  g_assert (cells);
-  cell = cells->data;
-  g_object_set (G_OBJECT (cell),
-               "ellipsize", PANGO_ELLIPSIZE_END,
-               NULL);
+  ShortcutsPaneModelFilter *model;
 
-  g_list_free (cells);
+  model = g_object_new (SHORTCUTS_PANE_MODEL_FILTER_TYPE,
+                       "child-model", child_model,
+                       "virtual-root", root,
+                       NULL);
 
-  /* Set the GtkPathBar file system backend */
-  _gtk_path_bar_set_file_system (GTK_PATH_BAR (impl->priv->browse_path_bar), impl->priv->file_system);
+  model->impl = impl;
 
-  /* Set the fixed size icon renderer, this requires
-   * that priv->icon_size be already setup.
-   */
-  set_icon_cell_renderer_fixed_size (impl);
+  return GTK_TREE_MODEL (model);
 }
 
-static void
-_gtk_file_chooser_default_init (GtkFileChooserDefault *impl)
-{
-  profile_start ("start", NULL);
-#ifdef PROFILE_FILE_CHOOSER
-  access ("MARK: *** CREATE FILE CHOOSER", F_OK);
-#endif
-
-  impl->priv = G_TYPE_INSTANCE_GET_PRIVATE (impl,
-                                           GTK_TYPE_FILE_CHOOSER_DEFAULT,
-                                           GtkFileChooserDefaultPrivate);
-
-  impl->priv->local_only = TRUE;
-  impl->priv->preview_widget_active = TRUE;
-  impl->priv->use_preview_label = TRUE;
-  impl->priv->select_multiple = FALSE;
-  impl->priv->show_hidden = FALSE;
-  impl->priv->show_size_column = TRUE;
-  impl->priv->icon_size = FALLBACK_ICON_SIZE;
-  impl->priv->load_state = LOAD_EMPTY;
-  impl->priv->reload_state = RELOAD_EMPTY;
-  impl->priv->pending_select_files = NULL;
-  impl->priv->location_mode = LOCATION_MODE_PATH_BAR;
-  impl->priv->operation_mode = OPERATION_MODE_BROWSE;
-  impl->priv->sort_column = MODEL_COL_NAME;
-  impl->priv->sort_order = GTK_SORT_ASCENDING;
-  impl->priv->recent_manager = gtk_recent_manager_get_default ();
-  impl->priv->create_folders = TRUE;
-
-  /* Ensure GTK+ private types used by the template
-   * definition before calling gtk_widget_init_template()
-   */
-  g_type_ensure (SHORTCUTS_PANE_MODEL_FILTER_TYPE);
-  g_type_ensure (GTK_TYPE_PATH_BAR);
-  gtk_widget_init_template (GTK_WIDGET (impl));
-
-  set_file_system_backend (impl);
-
-  /* Populate the Places sidebar */
-  shortcuts_model_populate (impl);
-
-  /* Setup various attributes and callbacks in the UI 
-   * which cannot be done with GtkBuilder.
-   */
-  post_process_ui (impl);
-
-  profile_end ("end", NULL);
-}
diff --git a/gtk/gtkfilechooserprivate.h b/gtk/gtkfilechooserprivate.h
index 34ff0f0..efcb0ea 100644
--- a/gtk/gtkfilechooserprivate.h
+++ b/gtk/gtkfilechooserprivate.h
@@ -46,7 +46,6 @@ G_BEGIN_DECLS
 #define GTK_FILE_CHOOSER_GET_IFACE(inst)  (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_FILE_CHOOSER, 
GtkFileChooserIface))
 
 typedef struct _GtkFileChooserIface GtkFileChooserIface;
-typedef struct _GtkFileChooserDefaultPrivate GtkFileChooserDefaultPrivate;
 
 struct _GtkFileChooserIface
 {
@@ -151,9 +150,160 @@ struct _GtkFileChooserDefault
 {
   GtkBox parent_instance;
 
-  GtkFileChooserDefaultPrivate *priv;
+  GtkFileChooserAction action;
+
+  GtkFileSystem *file_system;
+
+  /* Save mode widgets */
+  GtkWidget *save_widgets;
+  GtkWidget *save_widgets_table;
+
+  GtkWidget *save_folder_label;
+
+  /* The file browsing widgets */
+  GtkWidget *browse_widgets_box;
+  GtkWidget *browse_widgets_hpaned;
+  GtkWidget *browse_header_box;
+  GtkWidget *browse_shortcuts_tree_view;
+  GtkWidget *browse_shortcuts_add_button;
+  GtkWidget *browse_shortcuts_remove_button;
+  GtkWidget *browse_shortcuts_popup_menu;
+  GtkWidget *browse_shortcuts_popup_menu_remove_item;
+  GtkWidget *browse_shortcuts_popup_menu_rename_item;
+  GtkWidget *browse_files_tree_view;
+  GtkWidget *browse_files_popup_menu;
+  GtkWidget *browse_files_popup_menu_add_shortcut_item;
+  GtkWidget *browse_files_popup_menu_hidden_files_item;
+  GtkWidget *browse_files_popup_menu_size_column_item;
+  GtkWidget *browse_files_popup_menu_copy_file_location_item;
+  GtkWidget *browse_files_popup_menu_visit_file_item;
+  GtkWidget *browse_new_folder_button;
+  GtkWidget *browse_path_bar_hbox;
+  GtkSizeGroup *browse_path_bar_size_group;
+  GtkWidget *browse_path_bar;
+  GtkWidget *browse_special_mode_icon;
+  GtkWidget *browse_special_mode_label;
+  GtkWidget *browse_select_a_folder_info_bar;
+  GtkWidget *browse_select_a_folder_label;
+  GtkWidget *browse_select_a_folder_icon;
+
+  GtkFileSystemModel *browse_files_model;
+  char *browse_files_last_selected_name;
+
+  /* OPERATION_MODE_SEARCH */
+  GtkWidget *search_hbox;
+  GtkWidget *search_entry;
+  GtkSearchEngine *search_engine;
+  GtkQuery *search_query;
+  GtkFileSystemModel *search_model;
+
+  /* OPERATION_MODE_RECENT */
+  GtkRecentManager *recent_manager;
+  GtkFileSystemModel *recent_model;
+  guint load_recent_id;
+
+  GtkWidget *filter_combo_hbox;
+  GtkWidget *filter_combo;
+  GtkWidget *preview_box;
+  GtkWidget *preview_label;
+  GtkWidget *preview_widget;
+  GtkWidget *extra_align;
+  GtkWidget *extra_widget;
+
+  GtkWidget *location_button;
+  GtkWidget *location_entry_box;
+  GtkWidget *location_label;
+  GtkWidget *location_entry;
+  LocationMode location_mode;
+
+  GtkListStore *shortcuts_model;
+
+  /* Filter for the shortcuts pane.  We filter out the "current folder" row and
+   * the separator that we use for the "Save in folder" combo.
+   */
+  GtkTreeModel *shortcuts_pane_filter_model;
+  
+  /* Handles */
+  GSList *loading_shortcuts;
+  GSList *reload_icon_cancellables;
+  GCancellable *file_list_drag_data_received_cancellable;
+  GCancellable *update_current_folder_cancellable;
+  GCancellable *should_respond_get_info_cancellable;
+  GCancellable *file_exists_get_info_cancellable;
+  GCancellable *update_from_entry_cancellable;
+  GCancellable *shortcuts_activate_iter_cancellable;
+
+  LoadState load_state;
+  ReloadState reload_state;
+  guint load_timeout_id;
+
+  OperationMode operation_mode;
+
+  GSList *pending_select_files;
+
+  GtkFileFilter *current_filter;
+  GSList *filters;
+
+  int num_volumes;
+  int num_shortcuts;
+  int num_bookmarks;
+
+  gulong volumes_changed_id;
+  gulong bookmarks_changed_id;
+
+  GFile *current_volume_file;
+  GFile *current_folder;
+  GFile *preview_file;
+  char *preview_display_name;
+
+  GtkTreeViewColumn *list_name_column;
+  GtkCellRenderer *list_name_renderer;
+  GtkTreeViewColumn *list_mtime_column;
+  GtkTreeViewColumn *list_size_column;
+
+  GSource *edited_idle;
+  char *edited_new_text;
+
+  gulong settings_signal_id;
+  int icon_size;
+
+  GSource *focus_entry_idle;
+
+  gulong toplevel_set_focus_id;
+  GtkWidget *toplevel_last_focus_widget;
+
+  gint sort_column;
+  GtkSortType sort_order;
+
+#if 0
+  GdkDragContext *shortcuts_drag_context;
+  GSource *shortcuts_drag_outside_idle;
+#endif
+
+  /* Flags */
+
+  guint local_only : 1;
+  guint preview_widget_active : 1;
+  guint use_preview_label : 1;
+  guint select_multiple : 1;
+  guint show_hidden : 1;
+  guint do_overwrite_confirmation : 1;
+  guint list_sort_ascending : 1;
+  guint changing_folder : 1;
+  guint shortcuts_current_folder_active : 1;
+  guint has_home : 1;
+  guint has_desktop : 1;
+  guint has_search : 1;
+  guint has_recent: 1;
+  guint show_size_column : 1;
+  guint create_folders : 1;
+
+#if 0
+  guint shortcuts_drag_outside : 1;
+#endif
 };
 
+
 G_END_DECLS
 
 #endif /* __GTK_FILE_CHOOSER_PRIVATE_H__ */
diff --git a/gtk/tests/templates.c b/gtk/tests/templates.c
index 32c1e68..0e526c0 100644
--- a/gtk/tests/templates.c
+++ b/gtk/tests/templates.c
@@ -37,9 +37,6 @@ test_dialog_basic (void)
 
   dialog = gtk_dialog_new();
   g_assert (GTK_IS_DIALOG (dialog));
-  g_assert (gtk_dialog_get_action_area (GTK_DIALOG (dialog)) != NULL);
-  g_assert (gtk_dialog_get_content_area (GTK_DIALOG (dialog)) != NULL);
-
   gtk_widget_destroy (dialog);
 }
 
@@ -161,13 +158,6 @@ test_app_chooser_dialog_basic (void)
 
   widget = gtk_app_chooser_dialog_new_for_content_type (NULL, 0, "text/plain");
   g_assert (GTK_IS_APP_CHOOSER_DIALOG (widget));
-
-  /* GtkAppChooserDialog bug, if destroyed before spinning 
-   * the main context then app_chooser_online_get_default_ready_cb()
-   * will be eventually called and segfault.
-   */
-  g_timeout_add (500, main_loop_quit_cb, NULL);
-  gtk_main();
   gtk_widget_destroy (widget);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]