]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkfilechooserbutton.c
Use gtk_separator_new() instead gtk_[v|h]separator_new()
[~andy/gtk] / gtk / gtkfilechooserbutton.c
index e9178eeaeb447118c03371f6616d9a0bf86dea36..3b2acc3397ead2de6702faecb28f7713d16ae8c8 100644 (file)
@@ -20,7 +20,7 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include <config.h>
+#include "config.h"
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include "gtkfilechooserbutton.h"
 
 #include "gtkprivate.h"
-#include "gtkalias.h"
 
 /* **************** *
  *  Private Macros  *
  * **************** */
 
-#define GTK_FILE_CHOOSER_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_FILE_CHOOSER_BUTTON, GtkFileChooserButtonPrivate))
-
 #define DEFAULT_TITLE          N_("Select A File")
 #define DESKTOP_DISPLAY_NAME   N_("Desktop")
 #define FALLBACK_DISPLAY_NAME  N_("(None)")
@@ -137,7 +134,6 @@ struct _GtkFileChooserButtonPrivate
   GtkTreeModel *model;
   GtkTreeModel *filter_model;
 
-  gchar *backend;
   GtkFileSystem *fs;
   GFile *old_file;
 
@@ -211,10 +207,8 @@ static void     gtk_file_chooser_button_get_property       (GObject          *ob
                                                            GParamSpec       *pspec);
 static void     gtk_file_chooser_button_finalize           (GObject          *object);
 
-/* GtkObject Functions */
-static void     gtk_file_chooser_button_destroy            (GtkObject        *object);
-
 /* GtkWidget Functions */
+static void     gtk_file_chooser_button_destroy            (GtkWidget        *widget);
 static void     gtk_file_chooser_button_drag_data_received (GtkWidget        *widget,
                                                            GdkDragContext   *context,
                                                            gint              x,
@@ -223,7 +217,6 @@ static void     gtk_file_chooser_button_drag_data_received (GtkWidget        *wi
                                                            guint             type,
                                                            guint             drag_time);
 static void     gtk_file_chooser_button_show_all           (GtkWidget        *widget);
-static void     gtk_file_chooser_button_hide_all           (GtkWidget        *widget);
 static void     gtk_file_chooser_button_show               (GtkWidget        *widget);
 static void     gtk_file_chooser_button_hide               (GtkWidget        *widget);
 static void     gtk_file_chooser_button_map                (GtkWidget        *widget);
@@ -321,11 +314,9 @@ static void
 gtk_file_chooser_button_class_init (GtkFileChooserButtonClass * class)
 {
   GObjectClass *gobject_class;
-  GtkObjectClass *gtkobject_class;
   GtkWidgetClass *widget_class;
 
   gobject_class = G_OBJECT_CLASS (class);
-  gtkobject_class = GTK_OBJECT_CLASS (class);
   widget_class = GTK_WIDGET_CLASS (class);
 
   gobject_class->constructor = gtk_file_chooser_button_constructor;
@@ -333,11 +324,9 @@ gtk_file_chooser_button_class_init (GtkFileChooserButtonClass * class)
   gobject_class->get_property = gtk_file_chooser_button_get_property;
   gobject_class->finalize = gtk_file_chooser_button_finalize;
 
-  gtkobject_class->destroy = gtk_file_chooser_button_destroy;
-
+  widget_class->destroy = gtk_file_chooser_button_destroy;
   widget_class->drag_data_received = gtk_file_chooser_button_drag_data_received;
   widget_class->show_all = gtk_file_chooser_button_show_all;
-  widget_class->hide_all = gtk_file_chooser_button_hide_all;
   widget_class->show = gtk_file_chooser_button_show;
   widget_class->hide = gtk_file_chooser_button_hide;
   widget_class->map = gtk_file_chooser_button_map;
@@ -359,7 +348,7 @@ gtk_file_chooser_button_class_init (GtkFileChooserButtonClass * class)
   file_chooser_button_signals[FILE_SET] =
     g_signal_new (I_("file-set"),
                  G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                 G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkFileChooserButtonClass, file_set),
                  NULL, NULL,
                  _gtk_marshal_VOID__VOID,
@@ -436,7 +425,9 @@ gtk_file_chooser_button_init (GtkFileChooserButton *button)
   GtkWidget *box, *image, *sep;
   GtkTargetList *target_list;
 
-  priv = button->priv = GTK_FILE_CHOOSER_BUTTON_GET_PRIVATE (button);
+  priv = button->priv = G_TYPE_INSTANCE_GET_PRIVATE (button,
+                                                     GTK_TYPE_FILE_CHOOSER_BUTTON,
+                                                     GtkFileChooserButtonPrivate);
 
   priv->icon_size = FALLBACK_ICON_SIZE;
   priv->focus_on_click = TRUE;
@@ -464,7 +455,7 @@ gtk_file_chooser_button_init (GtkFileChooserButton *button)
   gtk_container_add (GTK_CONTAINER (box), priv->label);
   gtk_widget_show (priv->label);
 
-  sep = gtk_vseparator_new ();
+  sep = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
   gtk_box_pack_start (GTK_BOX (box), sep, FALSE, FALSE, 0);
   gtk_widget_show (sep);
 
@@ -638,31 +629,21 @@ gtk_file_chooser_button_constructor (GType                  type,
   GSList *list;
   char *current_folder;
 
-  object = (*G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->constructor) (type,
-                                                                                 n_params,
-                                                                                 params);
+  object = G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->constructor (type,
+                                                                              n_params,
+                                                                              params);
   button = GTK_FILE_CHOOSER_BUTTON (object);
   priv = button->priv;
 
   if (!priv->dialog)
     {
-      if (priv->backend)
-       priv->dialog = gtk_file_chooser_dialog_new_with_backend (NULL, NULL,
-                                                                GTK_FILE_CHOOSER_ACTION_OPEN,
-                                                                priv->backend,
-                                                                GTK_STOCK_CANCEL,
-                                                                GTK_RESPONSE_CANCEL,
-                                                                GTK_STOCK_OPEN,
-                                                                GTK_RESPONSE_ACCEPT,
-                                                                NULL);
-      else
-       priv->dialog = gtk_file_chooser_dialog_new (NULL, NULL,
-                                                   GTK_FILE_CHOOSER_ACTION_OPEN,
-                                                   GTK_STOCK_CANCEL,
-                                                   GTK_RESPONSE_CANCEL,
-                                                   GTK_STOCK_OPEN,
-                                                   GTK_RESPONSE_ACCEPT,
-                                                   NULL);
+      priv->dialog = gtk_file_chooser_dialog_new (NULL, NULL,
+                                                 GTK_FILE_CHOOSER_ACTION_OPEN,
+                                                 GTK_STOCK_CANCEL,
+                                                 GTK_RESPONSE_CANCEL,
+                                                 GTK_STOCK_OPEN,
+                                                 GTK_RESPONSE_ACCEPT,
+                                                 NULL);
 
       gtk_dialog_set_default_response (GTK_DIALOG (priv->dialog),
                                       GTK_RESPONSE_ACCEPT);
@@ -673,7 +654,7 @@ gtk_file_chooser_button_constructor (GType                  type,
 
       gtk_file_chooser_button_set_title (button, _(DEFAULT_TITLE));
     }
-  else if (!GTK_WINDOW (priv->dialog)->title)
+  else if (!gtk_window_get_title (GTK_WINDOW (priv->dialog)))
     {
       gtk_file_chooser_button_set_title (button, _(DEFAULT_TITLE));
     }
@@ -685,10 +666,7 @@ gtk_file_chooser_button_constructor (GType                  type,
       g_free (current_folder);
     }
 
-  g_free (priv->backend);
-  priv->backend = NULL;
-
-  g_signal_connect (priv->dialog, "delete_event",
+  g_signal_connect (priv->dialog, "delete-event",
                    G_CALLBACK (dialog_delete_event_cb), object);
   g_signal_connect (priv->dialog, "response",
                    G_CALLBACK (dialog_response_cb), object);
@@ -824,6 +802,7 @@ gtk_file_chooser_button_set_property (GObject      *object,
     case GTK_FILE_CHOOSER_PROP_EXTRA_WIDGET:
     case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
     case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
+    case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
       g_object_set_property (G_OBJECT (priv->dialog), pspec->name, value);
       break;
 
@@ -833,11 +812,6 @@ gtk_file_chooser_button_set_property (GObject      *object,
       fs_bookmarks_changed_cb (priv->fs, button);
       break;
 
-    case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
-      /* Construct-only */
-      priv->backend = g_value_dup_string (value);
-      break;
-
     case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
       g_warning ("%s: Choosers of type `%s` do not support selecting multiple files.",
                 G_STRFUNC, G_OBJECT_TYPE_NAME (object));
@@ -870,7 +844,6 @@ gtk_file_chooser_button_get_property (GObject    *object,
 
     case PROP_TITLE:
     case GTK_FILE_CHOOSER_PROP_ACTION:
-    case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND:
     case GTK_FILE_CHOOSER_PROP_FILTER:
     case GTK_FILE_CHOOSER_PROP_LOCAL_ONLY:
     case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET:
@@ -880,6 +853,7 @@ gtk_file_chooser_button_get_property (GObject    *object,
     case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
     case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
     case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
+    case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
       g_object_get_property (G_OBJECT (priv->dialog), pspec->name, value);
       break;
 
@@ -898,18 +872,17 @@ gtk_file_chooser_button_finalize (GObject *object)
   if (priv->old_file)
     g_object_unref (priv->old_file);
 
-  if (G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->finalize != NULL)
-    (*G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->finalize) (object);
+  G_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->finalize (object);
 }
 
 /* ********************* *
- *  GtkObject Functions  *
+ *  GtkWidget Functions  *
  * ********************* */
 
 static void
-gtk_file_chooser_button_destroy (GtkObject *object)
+gtk_file_chooser_button_destroy (GtkWidget *widget)
 {
-  GtkFileChooserButton *button = GTK_FILE_CHOOSER_BUTTON (object);
+  GtkFileChooserButton *button = GTK_FILE_CHOOSER_BUTTON (widget);
   GtkFileChooserButtonPrivate *priv = button->priv;
   GtkTreeIter iter;
   GSList *l;
@@ -969,15 +942,9 @@ gtk_file_chooser_button_destroy (GtkObject *object)
       priv->fs = NULL;
     }
 
-  if (GTK_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->destroy != NULL)
-    (*GTK_OBJECT_CLASS (gtk_file_chooser_button_parent_class)->destroy) (object);
+  GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->destroy (widget);
 }
 
-
-/* ********************* *
- *  GtkWidget Functions  *
- * ********************* */
-
 struct DndSelectFolderData
 {
   GtkFileSystem *file_system;
@@ -1015,19 +982,21 @@ dnd_select_folder_get_info_cb (GCancellable *cancellable,
     {
       gboolean is_folder;
 
-      is_folder = (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY);
+      is_folder = _gtk_file_info_consider_as_directory (info);
 
       data->selected =
        (((data->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER && is_folder) ||
          (data->action == GTK_FILE_CHOOSER_ACTION_OPEN && !is_folder)) &&
-        _gtk_file_chooser_select_file (GTK_FILE_CHOOSER (data->button->priv->dialog),
-                                       data->file, NULL));
+        gtk_file_chooser_select_file (GTK_FILE_CHOOSER (data->button->priv->dialog),
+                                      data->file, NULL));
     }
   else
     data->selected = FALSE;
 
   if (data->selected || data->uris[++data->i] == NULL)
     {
+      g_signal_emit (data->button, file_chooser_button_signals[FILE_SET], 0);
+
       g_object_unref (data->button);
       g_object_unref (data->file);
       g_strfreev (data->uris);
@@ -1065,11 +1034,11 @@ gtk_file_chooser_button_drag_data_received (GtkWidget        *widget,
   gchar *text;
 
   if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->drag_data_received != NULL)
-    (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->drag_data_received) (widget,
-                                                                                   context,
-                                                                                   x, y,
-                                                                                   data, type,
-                                                                                   drag_time);
+    GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->drag_data_received (widget,
+                                                                                context,
+                                                                                x, y,
+                                                                                data, type,
+                                                                                drag_time);
 
   if (widget == NULL || context == NULL || data == NULL || data->length < 0)
     return;
@@ -1109,10 +1078,11 @@ gtk_file_chooser_button_drag_data_received (GtkWidget        *widget,
     case TEXT_PLAIN:
       text = (char*) gtk_selection_data_get_text (data);
       file = g_file_new_for_uri (text);
-      _gtk_file_chooser_select_file (GTK_FILE_CHOOSER (priv->dialog), file,
-                                    NULL);
+      gtk_file_chooser_select_file (GTK_FILE_CHOOSER (priv->dialog), file,
+                                   NULL);
       g_object_unref (file);
       g_free (text);
+      g_signal_emit (button, file_chooser_button_signals[FILE_SET], 0);
       break;
 
     default:
@@ -1128,12 +1098,6 @@ gtk_file_chooser_button_show_all (GtkWidget *widget)
   gtk_widget_show (widget);
 }
 
-static void
-gtk_file_chooser_button_hide_all (GtkWidget *widget)
-{
-  gtk_widget_hide (widget);
-}
-
 static void
 gtk_file_chooser_button_show (GtkWidget *widget)
 {
@@ -1141,7 +1105,7 @@ gtk_file_chooser_button_show (GtkWidget *widget)
   GtkFileChooserButtonPrivate *priv = button->priv;
 
   if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->show)
-    (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->show) (widget);
+    GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->show (widget);
 
   if (priv->active)
     open_dialog (GTK_FILE_CHOOSER_BUTTON (widget));
@@ -1156,7 +1120,7 @@ gtk_file_chooser_button_hide (GtkWidget *widget)
   gtk_widget_hide (priv->dialog);
 
   if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->hide)
-    (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->hide) (widget);
+    GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->hide (widget);
 }
 
 static void
@@ -1176,8 +1140,7 @@ gtk_file_chooser_button_map (GtkWidget *widget)
       priv->folder_has_been_set = TRUE;
     }
 
-  if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->map)
-    (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->map) (widget);
+  GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->map (widget);
 }
 
 static gboolean
@@ -1386,9 +1349,8 @@ static void
 gtk_file_chooser_button_style_set (GtkWidget *widget,
                                   GtkStyle  *old_style)
 {
-  if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->style_set)
-    (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->style_set) (widget,
-                                                                          old_style);
+  GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->style_set (widget,
+                                                                     old_style);
 
   if (gtk_widget_has_screen (widget))
     change_icon_theme (GTK_FILE_CHOOSER_BUTTON (widget));
@@ -1399,10 +1361,10 @@ gtk_file_chooser_button_screen_changed (GtkWidget *widget,
                                        GdkScreen *old_screen)
 {
   if (GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->screen_changed)
-    (*GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->screen_changed) (widget,
-                                                                               old_screen);
+    GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->screen_changed (widget,
+                                                                            old_screen);
 
-  change_icon_theme (GTK_FILE_CHOOSER_BUTTON (widget)); 
+  change_icon_theme (GTK_FILE_CHOOSER_BUTTON (widget));
 }
 
 
@@ -1474,7 +1436,7 @@ set_info_get_info_cb (GCancellable *cancellable,
   if (!data->label)
     data->label = g_strdup (g_file_info_get_display_name (info));
 
-  is_folder = (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY);
+  is_folder = _gtk_file_info_consider_as_directory (info);
 
   gtk_list_store_set (GTK_LIST_STORE (data->button->priv->model), &iter,
                      ICON_COLUMN, pixbuf,
@@ -1600,7 +1562,7 @@ model_free_row_data (GtkFileChooserButton *button,
       g_object_unref (data);
       break;
     case ROW_TYPE_VOLUME:
-      _gtk_file_system_volume_free (data);
+      _gtk_file_system_volume_unref (data);
       break;
     default:
       break;
@@ -1791,11 +1753,16 @@ model_add_volumes (GtkFileChooserButton *button,
              GFile *base_file;
 
              base_file = _gtk_file_system_volume_get_root (volume);
-             if (base_file != NULL && !g_file_is_native (base_file))
-               {
-                 _gtk_file_system_volume_free (volume);
-                 continue;
-               }
+             if (base_file != NULL)
+                {
+                  if (!g_file_is_native (base_file))
+                    {
+                      g_object_unref (base_file);
+                      continue;
+                    }
+                  else
+                    g_object_unref (base_file);
+                }
            }
        }
 
@@ -1810,7 +1777,7 @@ model_add_volumes (GtkFileChooserButton *button,
                          ICON_COLUMN, pixbuf,
                          DISPLAY_NAME_COLUMN, display_name,
                          TYPE_COLUMN, ROW_TYPE_VOLUME,
-                         DATA_COLUMN, volume,
+                         DATA_COLUMN, _gtk_file_system_volume_ref (volume),
                          IS_FOLDER_COLUMN, TRUE,
                          -1);
 
@@ -2125,6 +2092,7 @@ filter_model_visible_func (GtkTreeModel *model,
                  {
                    if (!g_file_is_native (base_file))
                      retval = FALSE;
+                    g_object_unref (base_file);
                  }
                else
                  retval = FALSE;
@@ -2185,7 +2153,7 @@ update_combo_box (GtkFileChooserButton *button)
 
   gtk_tree_model_get_iter_first (priv->filter_model, &iter);
 
-  files = _gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
+  files = gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
 
   row_found = FALSE;
 
@@ -2312,10 +2280,16 @@ update_label_and_image (GtkFileChooserButton *button)
   gchar *label_text;
   GSList *files;
 
-  files = _gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
+  files = gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
   label_text = NULL;
   pixbuf = NULL;
 
+  if (priv->update_button_cancellable)
+    {
+      g_cancellable_cancel (priv->update_button_cancellable);
+      priv->update_button_cancellable = NULL;
+    }
+
   if (files && files->data)
     {
       GFile *file;
@@ -2341,18 +2315,12 @@ update_label_and_image (GtkFileChooserButton *button)
          if (base_file)
            g_object_unref (base_file);
 
-         _gtk_file_system_volume_free (volume);
+         _gtk_file_system_volume_unref (volume);
 
          if (label_text)
            goto out;
        }
 
-      if (priv->update_button_cancellable)
-       {
-         g_cancellable_cancel (priv->update_button_cancellable);
-         priv->update_button_cancellable = NULL;
-       }
-
       if (g_file_is_native (file))
        {
          priv->update_button_cancellable =
@@ -2387,7 +2355,10 @@ out:
       g_free (label_text);
     }
   else
-    gtk_label_set_text (GTK_LABEL (priv->label), _(FALLBACK_DISPLAY_NAME));
+    {
+      gtk_label_set_text (GTK_LABEL (priv->label), _(FALLBACK_DISPLAY_NAME));
+      gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), NULL);
+    }
 }
 
 
@@ -2453,13 +2424,13 @@ open_dialog (GtkFileChooserButton *button)
 
   /* Setup the dialog parent to be chooser button's toplevel, and be modal
      as needed. */
-  if (!GTK_WIDGET_VISIBLE (priv->dialog))
+  if (!gtk_widget_get_visible (priv->dialog))
     {
       GtkWidget *toplevel;
 
       toplevel = gtk_widget_get_toplevel (GTK_WIDGET (button));
 
-      if (GTK_WIDGET_TOPLEVEL (toplevel) && GTK_IS_WINDOW (toplevel))
+      if (gtk_widget_is_toplevel (toplevel) && GTK_IS_WINDOW (toplevel))
         {
           if (GTK_WINDOW (toplevel) != gtk_window_get_transient_for (GTK_WINDOW (priv->dialog)))
            gtk_window_set_transient_for (GTK_WINDOW (priv->dialog),
@@ -2480,7 +2451,7 @@ open_dialog (GtkFileChooserButton *button)
                              priv->dialog_file_activated_id);
       g_signal_handler_block (priv->dialog,
                              priv->dialog_selection_changed_id);
-      files = _gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
+      files = gtk_file_chooser_get_files (GTK_FILE_CHOOSER (priv->dialog));
       if (files)
        {
          if (files->data)
@@ -2527,8 +2498,8 @@ combo_box_changed_cb (GtkComboBox *combo_box,
        case ROW_TYPE_CURRENT_FOLDER:
          gtk_file_chooser_unselect_all (GTK_FILE_CHOOSER (priv->dialog));
          if (data)
-           _gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (priv->dialog),
-                                                      data, NULL);
+           gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (priv->dialog),
+                                                     data, NULL);
          break;
        case ROW_TYPE_VOLUME:
          {
@@ -2538,8 +2509,8 @@ combo_box_changed_cb (GtkComboBox *combo_box,
            base_file = _gtk_file_system_volume_get_root (data);
            if (base_file)
              {
-               _gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (priv->dialog),
-                                                          base_file, NULL);
+               gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (priv->dialog),
+                                                         base_file, NULL);
                g_object_unref (base_file);
              }
          }
@@ -2671,12 +2642,12 @@ dialog_response_cb (GtkDialog *dialog,
       switch (gtk_file_chooser_get_action (GTK_FILE_CHOOSER (dialog)))
        {
        case GTK_FILE_CHOOSER_ACTION_OPEN:
-         _gtk_file_chooser_select_file (GTK_FILE_CHOOSER (dialog), priv->old_file,
-                                        NULL);
+         gtk_file_chooser_select_file (GTK_FILE_CHOOSER (dialog), priv->old_file,
+                                       NULL);
          break;
        case GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER:
-         _gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (dialog),
-                                                    priv->old_file, NULL);
+         gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (dialog),
+                                                   priv->old_file, NULL);
          break;
        default:
          g_assert_not_reached ();
@@ -2709,7 +2680,9 @@ dialog_response_cb (GtkDialog *dialog,
   gtk_widget_set_sensitive (priv->combo_box, TRUE);
   gtk_widget_hide (priv->dialog);
 
-  g_signal_emit_by_name (user_data, "file-set");
+  if (response == GTK_RESPONSE_ACCEPT ||
+      response == GTK_RESPONSE_OK)
+    g_signal_emit (user_data, file_chooser_button_signals[FILE_SET], 0);
 }
 
 
@@ -2741,33 +2714,6 @@ gtk_file_chooser_button_new (const gchar          *title,
                       NULL);
 }
 
-/**
- * gtk_file_chooser_button_new_with_backend:
- * @title: the title of the browse dialog.
- * @action: the open mode for the widget.
- * @backend: the name of the #GtkFileSystem backend to use.
- * 
- * Creates a new file-selecting button widget using @backend.
- * 
- * Returns: a new button widget.
- * 
- * Since: 2.6
- **/
-GtkWidget *
-gtk_file_chooser_button_new_with_backend (const gchar          *title,
-                                         GtkFileChooserAction  action,
-                                         const gchar          *backend)
-{
-  g_return_val_if_fail (action == GTK_FILE_CHOOSER_ACTION_OPEN ||
-                       action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, NULL);
-
-  return g_object_new (GTK_TYPE_FILE_CHOOSER_BUTTON,
-                      "action", action,
-                      "title", (title ? title : _(DEFAULT_TITLE)),
-                      "file-system-backend", backend,
-                      NULL);
-}
-
 /**
  * gtk_file_chooser_button_new_with_dialog:
  * @dialog: the widget to use as dialog
@@ -2925,6 +2871,3 @@ gtk_file_chooser_button_get_focus_on_click (GtkFileChooserButton *button)
   
   return button->priv->focus_on_click;
 }
-
-#define __GTK_FILE_CHOOSER_BUTTON_C__
-#include "gtkaliasdef.c"