]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkfilechooserbutton.c
Deprecate flag macros for toplevel, state, no window and composite child
[~andy/gtk] / gtk / gtkfilechooserbutton.c
index 61ac369cc714387c552f85824ac7b7cc38ad6abd..771597a973561591e11ff49b0b57ce5b8e06ddf9 100644 (file)
@@ -358,7 +358,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,
@@ -810,6 +810,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;
 
@@ -865,6 +866,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;
 
@@ -998,7 +1000,7 @@ 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) ||
@@ -1011,6 +1013,8 @@ dnd_select_folder_get_info_cb (GCancellable *cancellable,
 
   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);
@@ -1096,6 +1100,7 @@ gtk_file_chooser_button_drag_data_received (GtkWidget          *widget,
                                    NULL);
       g_object_unref (file);
       g_free (text);
+      g_signal_emit (button, file_chooser_button_signals[FILE_SET], 0);
       break;
 
     default:
@@ -1455,7 +1460,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,
@@ -2106,6 +2111,7 @@ filter_model_visible_func (GtkTreeModel *model,
                  {
                    if (!g_file_is_native (base_file))
                      retval = FALSE;
+                    g_object_unref (base_file);
                  }
                else
                  retval = FALSE;
@@ -2297,6 +2303,12 @@ update_label_and_image (GtkFileChooserButton *button)
   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;
@@ -2328,12 +2340,6 @@ update_label_and_image (GtkFileChooserButton *button)
            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 =
@@ -2443,7 +2449,7 @@ open_dialog (GtkFileChooserButton *button)
 
       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),
@@ -2693,7 +2699,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);
 }
 
 
@@ -2736,7 +2744,7 @@ gtk_file_chooser_button_new (const gchar          *title,
  * Returns: a new button widget.
  * 
  * Since: 2.6
- * Deprecated: 2.14
+ * Deprecated: 2.14: Use gtk_file_chooser_button_new() instead.
  **/
 GtkWidget *
 gtk_file_chooser_button_new_with_backend (const gchar          *title,