summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-07-12 16:59:10 +0000
committerMatthias Clasen <mclasen@redhat.com>2020-07-12 16:59:10 +0000
commit78a59c95fed63c8a024fc831823ee88241fe8e48 (patch)
treeb939395ab878e41df7007b526ed5e7711462b9b7
parent7ddbbb50ff9da663bd6d1349e51bfb5e2eb08e10 (diff)
parentf1188aaeac9967586d9a3ed29ef9d4cecf919aa1 (diff)
downloadgtk+-78a59c95fed63c8a024fc831823ee88241fe8e48.tar.gz
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master See merge request GNOME/gtk!2231
-rw-r--r--gtk/gtkfilechooserdialog.c19
-rw-r--r--gtk/gtkfilechooserembed.c152
-rw-r--r--gtk/gtkfilechooserembed.h61
-rw-r--r--gtk/gtkfilechoosererrorstack.c2
-rw-r--r--gtk/gtkfilechoosernative.c1
-rw-r--r--gtk/gtkfilechoosernativeportal.c1
-rw-r--r--gtk/gtkfilechoosernativequartz.c1
-rw-r--r--gtk/gtkfilechoosernativewin32.c1
-rw-r--r--gtk/gtkfilechooserwidget.c170
-rw-r--r--gtk/gtkfilechooserwidgetprivate.h6
-rw-r--r--gtk/gtknativedialog.c1
-rw-r--r--gtk/meson.build1
-rw-r--r--gtk/ui/gtkfilechooserdialog.ui1
13 files changed, 42 insertions, 375 deletions
diff --git a/gtk/gtkfilechooserdialog.c b/gtk/gtkfilechooserdialog.c
index d27ba8e3c0..f7a16057cc 100644
--- a/gtk/gtkfilechooserdialog.c
+++ b/gtk/gtkfilechooserdialog.c
@@ -25,7 +25,6 @@
#include "gtkfilechooserwidget.h"
#include "gtkfilechooserwidgetprivate.h"
#include "gtkfilechooserutils.h"
-#include "gtkfilechooserembed.h"
#include "gtksizerequest.h"
#include "gtktypebuiltins.h"
#include "gtkintl.h"
@@ -264,8 +263,9 @@ static void gtk_file_chooser_dialog_size_allocate (GtkWidget *wid
int width,
int height,
int baseline);
-static void file_chooser_widget_response_requested (GtkWidget *widget,
- GtkFileChooserDialog *dialog);
+static void gtk_file_chooser_dialog_activate_response (GtkWidget *widget,
+ const char *action_name,
+ GVariant *parameters);
static void response_cb (GtkDialog *dialog,
gint response_id);
@@ -305,7 +305,8 @@ gtk_file_chooser_dialog_class_init (GtkFileChooserDialogClass *class)
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserDialog, widget);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserDialog, buttons);
gtk_widget_class_bind_template_callback (widget_class, response_cb);
- gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_response_requested);
+
+ gtk_widget_class_install_action (widget_class, "response.activate", NULL, gtk_file_chooser_dialog_activate_response);
}
static void
@@ -361,9 +362,11 @@ is_accept_response_id (gint response_id)
}
static void
-file_chooser_widget_response_requested (GtkWidget *widget,
- GtkFileChooserDialog *dialog)
+gtk_file_chooser_dialog_activate_response (GtkWidget *widget,
+ const char *action_name,
+ GVariant *parameters)
{
+ GtkFileChooserDialog *dialog = GTK_FILE_CHOOSER_DIALOG (widget);
GtkFileChooserDialogPrivate *priv = gtk_file_chooser_dialog_get_instance_private (dialog);
GtkWidget *button;
@@ -606,7 +609,7 @@ gtk_file_chooser_dialog_map (GtkWidget *widget)
setup_save_entry (dialog);
ensure_default_response (dialog);
- _gtk_file_chooser_embed_initial_focus (GTK_FILE_CHOOSER_EMBED (priv->widget));
+ gtk_file_chooser_widget_initial_focus (GTK_FILE_CHOOSER_WIDGET (priv->widget));
GTK_WIDGET_CLASS (gtk_file_chooser_dialog_parent_class)->map (widget);
}
@@ -670,7 +673,7 @@ response_cb (GtkDialog *dialog,
/* Act only on response IDs we recognize */
if (is_accept_response_id (response_id) &&
!priv->response_requested &&
- !_gtk_file_chooser_embed_should_respond (GTK_FILE_CHOOSER_EMBED (priv->widget)))
+ !gtk_file_chooser_widget_should_respond (GTK_FILE_CHOOSER_WIDGET (priv->widget)))
{
g_signal_stop_emission_by_name (dialog, "response");
}
diff --git a/gtk/gtkfilechooserembed.c b/gtk/gtkfilechooserembed.c
deleted file mode 100644
index 24c171a730..0000000000
--- a/gtk/gtkfilechooserembed.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* GTK - The GIMP Toolkit
- * gtkfilechooserembed.h: Abstract sizing interface for file selector implementations
- * Copyright (C) 2004, Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "config.h"
-#include "gtkfilechooserembed.h"
-#include "gtkmarshalers.h"
-#include "gtkintl.h"
-
-static void gtk_file_chooser_embed_class_init (gpointer g_iface);
-static gboolean delegate_should_respond (GtkFileChooserEmbed *chooser_embed);
-static void delegate_initial_focus (GtkFileChooserEmbed *chooser_embed);
-static void delegate_response_requested (GtkFileChooserEmbed *chooser_embed,
- gpointer data);
-
-static GtkFileChooserEmbed *
-get_delegate (GtkFileChooserEmbed *receiver)
-{
- return g_object_get_data (G_OBJECT (receiver), "gtk-file-chooser-embed-delegate");
-}
-
-/**
- * _gtk_file_chooser_embed_delegate_iface_init:
- * @iface: a #GtkFileChoserEmbedIface structure
- *
- * An interface-initialization function for use in cases where an object is
- * simply delegating the methods, signals of the #GtkFileChooserEmbed interface
- * to another object. _gtk_file_chooser_embed_set_delegate() must be called on
- * each instance of the object so that the delegate object can be found.
- **/
-void
-_gtk_file_chooser_embed_delegate_iface_init (GtkFileChooserEmbedIface *iface)
-{
- iface->should_respond = delegate_should_respond;
- iface->initial_focus = delegate_initial_focus;
-}
-
-/**
- * _gtk_file_chooser_embed_set_delegate:
- * @receiver: a GOobject implementing #GtkFileChooserEmbed
- * @delegate: another GObject implementing #GtkFileChooserEmbed
- *
- * Establishes that calls on @receiver for #GtkFileChooser methods should be
- * delegated to @delegate, and that #GtkFileChooser signals emitted on @delegate
- * should be forwarded to @receiver. Must be used in conjunction with
- * _gtk_file_chooser_embed_delegate_iface_init().
- **/
-void
-_gtk_file_chooser_embed_set_delegate (GtkFileChooserEmbed *receiver,
- GtkFileChooserEmbed *delegate)
-{
- g_return_if_fail (GTK_IS_FILE_CHOOSER_EMBED (receiver));
- g_return_if_fail (GTK_IS_FILE_CHOOSER_EMBED (delegate));
-
- g_object_set_data (G_OBJECT (receiver), I_("gtk-file-chooser-embed-delegate"), delegate);
-
- g_signal_connect (delegate, "response-requested",
- G_CALLBACK (delegate_response_requested), receiver);
-}
-
-
-
-static gboolean
-delegate_should_respond (GtkFileChooserEmbed *chooser_embed)
-{
- return _gtk_file_chooser_embed_should_respond (get_delegate (chooser_embed));
-}
-
-static void
-delegate_initial_focus (GtkFileChooserEmbed *chooser_embed)
-{
- _gtk_file_chooser_embed_initial_focus (get_delegate (chooser_embed));
-}
-
-static void
-delegate_response_requested (GtkFileChooserEmbed *chooser_embed,
- gpointer data)
-{
- g_signal_emit_by_name (data, "response-requested");
-}
-
-
-/* publicly callable functions */
-
-GType
-_gtk_file_chooser_embed_get_type (void)
-{
- static GType file_chooser_embed_type = 0;
-
- if (!file_chooser_embed_type)
- {
- const GTypeInfo file_chooser_embed_info =
- {
- sizeof (GtkFileChooserEmbedIface), /* class_size */
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc)gtk_file_chooser_embed_class_init, /* class_init */
- };
-
- file_chooser_embed_type = g_type_register_static (G_TYPE_INTERFACE,
- I_("GtkFileChooserEmbed"),
- &file_chooser_embed_info, 0);
-
- g_type_interface_add_prerequisite (file_chooser_embed_type, GTK_TYPE_WIDGET);
- }
-
- return file_chooser_embed_type;
-}
-
-static void
-gtk_file_chooser_embed_class_init (gpointer g_iface)
-{
- GType iface_type = G_TYPE_FROM_INTERFACE (g_iface);
-
- g_signal_new (I_("response-requested"),
- iface_type,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkFileChooserEmbedIface, response_requested),
- NULL, NULL,
- NULL,
- G_TYPE_NONE, 0);
-}
-
-gboolean
-_gtk_file_chooser_embed_should_respond (GtkFileChooserEmbed *chooser_embed)
-{
- g_return_val_if_fail (GTK_IS_FILE_CHOOSER_EMBED (chooser_embed), FALSE);
-
- return GTK_FILE_CHOOSER_EMBED_GET_IFACE (chooser_embed)->should_respond (chooser_embed);
-}
-
-void
-_gtk_file_chooser_embed_initial_focus (GtkFileChooserEmbed *chooser_embed)
-{
- g_return_if_fail (GTK_IS_FILE_CHOOSER_EMBED (chooser_embed));
-
- GTK_FILE_CHOOSER_EMBED_GET_IFACE (chooser_embed)->initial_focus (chooser_embed);
-}
diff --git a/gtk/gtkfilechooserembed.h b/gtk/gtkfilechooserembed.h
deleted file mode 100644
index 5a013190a3..0000000000
--- a/gtk/gtkfilechooserembed.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* GTK - The GIMP Toolkit
- * gtkfilechooserembed.h: Abstract sizing interface for file selector implementations
- * Copyright (C) 2004, Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __GTK_FILE_CHOOSER_EMBED_H__
-#define __GTK_FILE_CHOOSER_EMBED_H__
-
-#include <gtk/gtkwidget.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_FILE_CHOOSER_EMBED (_gtk_file_chooser_embed_get_type ())
-#define GTK_FILE_CHOOSER_EMBED(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER_EMBED, GtkFileChooserEmbed))
-#define GTK_IS_FILE_CHOOSER_EMBED(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_CHOOSER_EMBED))
-#define GTK_FILE_CHOOSER_EMBED_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GTK_TYPE_FILE_CHOOSER_EMBED, GtkFileChooserEmbedIface))
-
-typedef struct _GtkFileChooserEmbed GtkFileChooserEmbed;
-typedef struct _GtkFileChooserEmbedIface GtkFileChooserEmbedIface;
-
-
-struct _GtkFileChooserEmbedIface
-{
- GTypeInterface base_iface;
-
- /* Methods
- */
- gboolean (*should_respond) (GtkFileChooserEmbed *chooser_embed);
-
- void (*initial_focus) (GtkFileChooserEmbed *chooser_embed);
- /* Signals
- */
- void (*response_requested) (GtkFileChooserEmbed *chooser_embed);
-};
-
-GType _gtk_file_chooser_embed_get_type (void) G_GNUC_CONST;
-
-gboolean _gtk_file_chooser_embed_should_respond (GtkFileChooserEmbed *chooser_embed);
-
-void _gtk_file_chooser_embed_initial_focus (GtkFileChooserEmbed *chooser_embed);
-
-void _gtk_file_chooser_embed_delegate_iface_init (GtkFileChooserEmbedIface *iface);
-void _gtk_file_chooser_embed_set_delegate (GtkFileChooserEmbed *receiver,
- GtkFileChooserEmbed *delegate);
-
-G_END_DECLS
-
-#endif /* __GTK_FILE_CHOOSER_EMBED_H__ */
diff --git a/gtk/gtkfilechoosererrorstack.c b/gtk/gtkfilechoosererrorstack.c
index 9020946626..6f9cf89d22 100644
--- a/gtk/gtkfilechoosererrorstack.c
+++ b/gtk/gtkfilechoosererrorstack.c
@@ -148,7 +148,7 @@ void
gtk_file_chooser_error_stack_set_custom_error (GtkFileChooserErrorStack *self,
const char *label_text)
{
- GtkWidget *label = gtk_stack_get_child_by_name (GTK_STACK (self->stack), "cutsom");
+ GtkWidget *label = gtk_stack_get_child_by_name (GTK_STACK (self->stack), "custom");
gtk_label_set_text (GTK_LABEL (label), label_text);
diff --git a/gtk/gtkfilechoosernative.c b/gtk/gtkfilechoosernative.c
index d157dfa002..6755eb90d7 100644
--- a/gtk/gtkfilechoosernative.c
+++ b/gtk/gtkfilechoosernative.c
@@ -28,7 +28,6 @@
#include "gtkfilechooserwidget.h"
#include "gtkfilechooserwidgetprivate.h"
#include "gtkfilechooserutils.h"
-#include "gtkfilechooserembed.h"
#include "gtksizerequest.h"
#include "gtktypebuiltins.h"
#include "gtkintl.h"
diff --git a/gtk/gtkfilechoosernativeportal.c b/gtk/gtkfilechoosernativeportal.c
index 1aafd3d9fc..e06d8678fb 100644
--- a/gtk/gtkfilechoosernativeportal.c
+++ b/gtk/gtkfilechoosernativeportal.c
@@ -28,7 +28,6 @@
#include "gtkfilechooserwidget.h"
#include "gtkfilechooserwidgetprivate.h"
#include "gtkfilechooserutils.h"
-#include "gtkfilechooserembed.h"
#include "gtksizerequest.h"
#include "gtktypebuiltins.h"
#include "gtkintl.h"
diff --git a/gtk/gtkfilechoosernativequartz.c b/gtk/gtkfilechoosernativequartz.c
index 1726942b97..847a461536 100644
--- a/gtk/gtkfilechoosernativequartz.c
+++ b/gtk/gtkfilechoosernativequartz.c
@@ -28,7 +28,6 @@
#include "gtkfilechooserwidget.h"
#include "gtkfilechooserwidgetprivate.h"
#include "gtkfilechooserutils.h"
-#include "gtkfilechooserembed.h"
#include "gtksizerequest.h"
#include "gtktypebuiltins.h"
#include "gtkintl.h"
diff --git a/gtk/gtkfilechoosernativewin32.c b/gtk/gtkfilechoosernativewin32.c
index 9b43506042..68076989fc 100644
--- a/gtk/gtkfilechoosernativewin32.c
+++ b/gtk/gtkfilechoosernativewin32.c
@@ -34,7 +34,6 @@
#include "gtkfilechooserwidget.h"
#include "gtkfilechooserwidgetprivate.h"
#include "gtkfilechooserutils.h"
-#include "gtkfilechooserembed.h"
#include "gtksizerequest.h"
#include "gtktypebuiltins.h"
#include "gtkintl.h"
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index b2500b790b..3f0bddf223 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -34,7 +34,6 @@
#include "gtkentry.h"
#include "gtkfilechooserprivate.h"
#include "gtkfilechooserdialog.h"
-#include "gtkfilechooserembed.h"
#include "gtkfilechooserentry.h"
#include "gtkfilechooserutils.h"
#include "gtkfilechooser.h"
@@ -88,6 +87,7 @@
#include "gtkshortcuttrigger.h"
#include "gtkshortcutaction.h"
#include "gtkshortcut.h"
+#include "gtkstringlist.h"
#include <cairo-gobject.h>
@@ -117,56 +117,6 @@
/* 150 mseconds of delay */
#define LOCATION_CHANGED_TIMEOUT 150
-/* Profiling stuff */
-#undef PROFILE_FILE_CHOOSER
-#ifdef PROFILE_FILE_CHOOSER
-
-
-#ifndef F_OK
-#define F_OK 0
-#endif
-
-#define PROFILE_INDENT 4
-
-static int profile_indent;
-
-static void
-profile_add_indent (int indent)
-{
- profile_indent += indent;
- if (profile_indent < 0)
- g_error ("You screwed up your indentation");
-}
-
-static void
-_gtk_file_chooser_profile_log (const char *func, int indent, const char *msg1, const char *msg2)
-{
- char *str;
-
- if (indent < 0)
- profile_add_indent (indent);
-
- if (profile_indent == 0)
- str = g_strdup_printf ("MARK: %s %s %s", func ? func : "", msg1 ? msg1 : "", msg2 ? msg2 : "");
- else
- str = g_strdup_printf ("MARK: %*c %s %s %s", profile_indent - 1, ' ', func ? func : "", msg1 ? msg1 : "", msg2 ? msg2 : "");
-
- access (str, F_OK);
- g_free (str);
-
- if (indent > 0)
- profile_add_indent (indent);
-}
-
-#define profile_start(x, y) _gtk_file_chooser_profile_log (G_STRFUNC, PROFILE_INDENT, x, y)
-#define profile_end(x, y) _gtk_file_chooser_profile_log (G_STRFUNC, -PROFILE_INDENT, x, y)
-#define profile_msg(x, y) _gtk_file_chooser_profile_log (NULL, 0, x, y)
-#else
-#define profile_start(x, y)
-#define profile_end(x, y)
-#define profile_msg(x, y)
-#endif
-
enum {
PROP_SEARCH_MODE = 1,
PROP_SUBTITLE
@@ -437,7 +387,6 @@ enum {
#define ICON_SIZE 16
static void gtk_file_chooser_widget_iface_init (GtkFileChooserIface *iface);
-static void gtk_file_chooser_embed_default_iface_init (GtkFileChooserEmbedIface *iface);
static void gtk_file_chooser_widget_constructed (GObject *object);
static void gtk_file_chooser_widget_finalize (GObject *object);
@@ -490,9 +439,6 @@ static gboolean gtk_file_chooser_widget_remove_shortcut_folder (GtkFileCho
GError **error);
static GListModel * gtk_file_chooser_widget_get_shortcut_folders (GtkFileChooser *chooser);
-static gboolean gtk_file_chooser_widget_should_respond (GtkFileChooserEmbed *chooser_embed);
-static void gtk_file_chooser_widget_initial_focus (GtkFileChooserEmbed *chooser_embed);
-
static void gtk_file_chooser_widget_add_choice (GtkFileChooser *chooser,
const char *id,
const char *label,
@@ -596,9 +542,7 @@ static void set_show_hidden (GtkFileChooserWidget *impl,
G_DEFINE_TYPE_WITH_CODE (GtkFileChooserWidget, gtk_file_chooser_widget, GTK_TYPE_WIDGET,
G_IMPLEMENT_INTERFACE (GTK_TYPE_FILE_CHOOSER,
- gtk_file_chooser_widget_iface_init)
- G_IMPLEMENT_INTERFACE (GTK_TYPE_FILE_CHOOSER_EMBED,
- gtk_file_chooser_embed_default_iface_init));
+ gtk_file_chooser_widget_iface_init))
static void
gtk_file_chooser_widget_iface_init (GtkFileChooserIface *iface)
@@ -625,13 +569,6 @@ gtk_file_chooser_widget_iface_init (GtkFileChooserIface *iface)
}
static void
-gtk_file_chooser_embed_default_iface_init (GtkFileChooserEmbedIface *iface)
-{
- iface->should_respond = gtk_file_chooser_widget_should_respond;
- iface->initial_focus = gtk_file_chooser_widget_initial_focus;
-}
-
-static void
pending_select_files_free (GtkFileChooserWidget *impl)
{
g_slist_free_full (impl->pending_select_files, g_object_unref);
@@ -2582,13 +2519,9 @@ gtk_file_chooser_widget_constructed (GObject *object)
{
GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (object);
- profile_start ("start", NULL);
-
G_OBJECT_CLASS (gtk_file_chooser_widget_parent_class)->constructed (object);
update_appearance (impl);
-
- profile_end ("end", NULL);
}
static void
@@ -3244,15 +3177,11 @@ gtk_file_chooser_widget_unroot (GtkWidget *widget)
static void
change_icon_theme (GtkFileChooserWidget *impl)
{
- profile_start ("start", NULL);
-
/* 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);
clear_model_cache (impl, MODEL_COL_ICON);
gtk_widget_queue_resize (impl->browse_files_tree_view);
-
- profile_end ("end", NULL);
}
/* Callback used when a GtkSettings value changes */
@@ -3263,14 +3192,10 @@ settings_notify_cb (GObject *object,
{
const char *name;
- profile_start ("start", NULL);
-
name = g_param_spec_get_name (pspec);
if (strcmp (name, "gtk-icon-theme-name") == 0)
change_icon_theme (impl);
-
- profile_end ("end", NULL);
}
/* Installs a signal handler for GtkSettings so that we can monitor changes in
@@ -3281,21 +3206,14 @@ check_icon_theme (GtkFileChooserWidget *impl)
{
GtkSettings *settings;
- profile_start ("start", NULL);
-
if (impl->settings_signal_id)
- {
- profile_end ("end", NULL);
- return;
- }
+ return;
settings = gtk_widget_get_settings (GTK_WIDGET (impl));
impl->settings_signal_id = g_signal_connect (settings, "notify",
G_CALLBACK (settings_notify_cb), impl);
change_icon_theme (impl);
-
- profile_end ("end", NULL);
}
static void
@@ -3304,17 +3222,11 @@ gtk_file_chooser_widget_css_changed (GtkWidget *widget,
{
GtkFileChooserWidget *impl;
- profile_start ("start", NULL);
-
impl = GTK_FILE_CHOOSER_WIDGET (widget);
- profile_msg (" parent class css_changed start", NULL);
GTK_WIDGET_CLASS (gtk_file_chooser_widget_parent_class)->css_changed (widget, change);
- profile_msg (" parent class css_changed end", NULL);
change_icon_theme (impl);
-
- profile_end ("end", NULL);
}
static void
@@ -3550,8 +3462,6 @@ gtk_file_chooser_widget_map (GtkWidget *widget)
{
GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (widget);
- profile_start ("start", NULL);
-
impl->browse_files_interaction_frozen = FALSE;
GTK_WIDGET_CLASS (gtk_file_chooser_widget_parent_class)->map (widget);
@@ -3578,8 +3488,6 @@ gtk_file_chooser_widget_map (GtkWidget *widget)
g_assert_not_reached ();
}
}
-
- profile_end ("end", NULL);
}
/* GtkWidget::unmap method */
@@ -3879,22 +3787,16 @@ update_columns (GtkFileChooserWidget *impl,
static void
load_set_model (GtkFileChooserWidget *impl)
{
- profile_start ("start", 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->browse_files_tree_view),
GTK_TREE_MODEL (impl->browse_files_model));
update_columns (impl, FALSE, _("Modified"));
file_list_set_sort_column_ids (impl);
set_sort_column (impl);
- profile_msg (" gtk_tree_view_set_model end", NULL);
impl->list_sort_ascending = TRUE;
g_set_object (&impl->model_for_search, impl->browse_files_model);
-
- profile_end ("end", NULL);
}
/* Timeout callback used when the loading timer expires */
@@ -3903,8 +3805,6 @@ load_timeout_cb (gpointer data)
{
GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (data);
- profile_start ("start", NULL);
-
g_assert (impl->load_state == LOAD_PRELOAD);
g_assert (impl->load_timeout_id != 0);
g_assert (impl->browse_files_model != NULL);
@@ -3914,8 +3814,6 @@ load_timeout_cb (gpointer data)
load_set_model (impl);
- profile_end ("end", NULL);
-
return FALSE;
}
@@ -4168,8 +4066,6 @@ browse_files_model_finished_loading_cb (GtkFileSystemModel *model,
GError *error,
GtkFileChooserWidget *impl)
{
- profile_start ("start", NULL);
-
if (error)
{
set_busy_cursor (impl, FALSE);
@@ -4190,7 +4086,6 @@ browse_files_model_finished_loading_cb (GtkFileSystemModel *model,
/* We can't g_assert_not_reached(), as something other than us may have
* initiated a folder reload. See #165556.
*/
- profile_end ("end", NULL);
return;
}
@@ -4200,11 +4095,6 @@ browse_files_model_finished_loading_cb (GtkFileSystemModel *model,
pending_select_files_process (impl);
set_busy_cursor (impl, FALSE);
-#ifdef PROFILE_FILE_CHOOSER
- access ("MARK: *** FINISHED LOADING", F_OK);
-#endif
-
- profile_end ("end", NULL);
}
/* Callback used when file system model adds or updates a file.
@@ -4721,8 +4611,6 @@ set_list_model (GtkFileChooserWidget *impl,
_gtk_file_system_model_get_directory (impl->browse_files_model) == impl->current_folder)
return TRUE;
- profile_start ("start", NULL);
-
stop_loading_and_clear_list_model (impl, TRUE);
set_busy_cursor (impl, TRUE);
@@ -4736,7 +4624,6 @@ set_list_model (GtkFileChooserWidget *impl,
_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->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_TYPE, type_sort_func, impl, NULL);
@@ -4757,8 +4644,6 @@ set_list_model (GtkFileChooserWidget *impl,
_gtk_file_system_model_set_filter (impl->browse_files_model, impl->current_filter);
- profile_end ("end", NULL);
-
return TRUE;
}
@@ -5152,8 +5037,6 @@ gtk_file_chooser_widget_update_current_folder (GtkFileChooser *chooser,
GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (chooser);
struct UpdateCurrentFolderData *data;
- profile_start ("start", NULL);
-
g_object_ref (file);
operation_mode_set (impl, OPERATION_MODE_BROWSE);
@@ -5183,7 +5066,6 @@ gtk_file_chooser_widget_update_current_folder (GtkFileChooser *chooser,
set_busy_cursor (impl, TRUE);
g_object_unref (file);
- profile_end ("end", NULL);
return TRUE;
}
@@ -5818,6 +5700,7 @@ add_custom_button_to_dialog (GtkDialog *dialog,
static void
request_response_and_add_to_recent_list (GtkFileChooserWidget *impl)
{
+ gtk_widget_activate_action (GTK_WIDGET (impl), "response.activate", NULL);
g_signal_emit_by_name (impl, "response-requested");
add_selection_to_recent_list (impl);
}
@@ -6221,10 +6104,9 @@ add_selection_to_recent_list (GtkFileChooserWidget *impl)
g_object_unref (files);
}
-static gboolean
-gtk_file_chooser_widget_should_respond (GtkFileChooserEmbed *chooser_embed)
+gboolean
+gtk_file_chooser_widget_should_respond (GtkFileChooserWidget *impl)
{
- GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (chooser_embed);
GtkWidget *toplevel;
GtkWidget *current_focus;
gboolean retval;
@@ -6470,11 +6352,9 @@ gtk_file_chooser_widget_should_respond (GtkFileChooserEmbed *chooser_embed)
return retval;
}
-/* Implementation for GtkFileChooserEmbed::initial_focus() */
-static void
-gtk_file_chooser_widget_initial_focus (GtkFileChooserEmbed *chooser_embed)
+void
+gtk_file_chooser_widget_initial_focus (GtkFileChooserWidget *impl)
{
- GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (chooser_embed);
GtkWidget *widget;
if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
@@ -7947,11 +7827,6 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl)
{
GtkExpression *expression;
- profile_start ("start", NULL);
-#ifdef PROFILE_FILE_CHOOSER
- access ("MARK: *** CREATE FILE CHOOSER", F_OK);
-#endif
-
impl->select_multiple = FALSE;
impl->show_hidden = FALSE;
impl->show_size_column = TRUE;
@@ -7998,8 +7873,6 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl)
* which cannot be done with GtkBuilder
*/
post_process_ui (impl);
-
- profile_end ("end", NULL);
}
/**
@@ -8046,6 +7919,7 @@ gtk_file_chooser_widget_add_choice (GtkFileChooser *chooser,
{
GtkWidget *box;
GtkWidget *combo;
+ GListModel *model;
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_append (GTK_BOX (box), gtk_label_new (label));
@@ -8054,8 +7928,9 @@ gtk_file_chooser_widget_add_choice (GtkFileChooser *chooser,
g_hash_table_insert (impl->choices, g_strdup (id), combo);
gtk_box_append (GTK_BOX (box), combo);
- gtk_drop_down_set_from_strings (GTK_DROP_DOWN (combo), option_labels);
- g_object_set_data_full (G_OBJECT (combo), "options", g_strdupv ((char **)options), (GDestroyNotify)g_strfreev);
+ model = G_LIST_MODEL (gtk_string_list_new ((const char * const *)options));
+ gtk_drop_down_set_model (GTK_DROP_DOWN (combo), model);
+ g_object_unref (model);
widget = box;
}
@@ -8110,11 +7985,15 @@ gtk_file_chooser_widget_set_choice (GtkFileChooser *chooser,
if (GTK_IS_DROP_DOWN (widget))
{
- guint i;
- const char **options = (const char **)g_object_get_data (G_OBJECT (widget), "options");
- for (i = 0; options[i]; i++)
+ guint i, n;
+ GListModel *model;
+
+ model = gtk_drop_down_get_model (GTK_DROP_DOWN (widget));
+ n = g_list_model_get_n_items (model);
+ for (i = 0; i < n; i++)
{
- if (strcmp (options[i], option) == 0)
+ const char *string = gtk_string_list_get_string (GTK_STRING_LIST (model), i);
+ if (strcmp (string, option) == 0)
{
gtk_drop_down_set_selected (GTK_DROP_DOWN (widget), i);
break;
@@ -8138,11 +8017,10 @@ gtk_file_chooser_widget_get_choice (GtkFileChooser *chooser,
widget = (GtkWidget *)g_hash_table_lookup (impl->choices, id);
if (GTK_IS_DROP_DOWN (widget))
{
- const char **options = (const char **)g_object_get_data (G_OBJECT (widget), "options");
- guint selected = gtk_drop_down_get_selected (GTK_DROP_DOWN (widget));
- if (selected == GTK_INVALID_LIST_POSITION)
- return NULL;
- return options[selected];
+ gpointer selected = gtk_drop_down_get_selected_item (GTK_DROP_DOWN (widget));
+ if (GTK_IS_STRING_OBJECT (selected))
+ return gtk_string_object_get_string (GTK_STRING_OBJECT (selected));
+ return NULL;
}
else if (GTK_IS_TOGGLE_BUTTON (widget))
diff --git a/gtk/gtkfilechooserwidgetprivate.h b/gtk/gtkfilechooserwidgetprivate.h
index 2c00f6ff8a..07b0ce3897 100644
--- a/gtk/gtkfilechooserwidgetprivate.h
+++ b/gtk/gtkfilechooserwidgetprivate.h
@@ -30,6 +30,12 @@ void
gtk_file_chooser_widget_set_save_entry (GtkFileChooserWidget *chooser,
GtkWidget *entry);
+gboolean
+gtk_file_chooser_widget_should_respond (GtkFileChooserWidget *chooser);
+
+void
+gtk_file_chooser_widget_initial_focus (GtkFileChooserWidget *chooser);
+
G_END_DECLS
#endif /* __GTK_FILE_CHOOSER_WIDGET_PRIVATE_H__ */
diff --git a/gtk/gtknativedialog.c b/gtk/gtknativedialog.c
index 1ba13798c5..eed21777fd 100644
--- a/gtk/gtknativedialog.c
+++ b/gtk/gtknativedialog.c
@@ -27,7 +27,6 @@
#include "gtkfilechooserwidget.h"
#include "gtkfilechooserwidgetprivate.h"
#include "gtkfilechooserutils.h"
-#include "gtkfilechooserembed.h"
#include "gtksizerequest.h"
#include "gtktypebuiltins.h"
#include "gtkintl.h"
diff --git a/gtk/meson.build b/gtk/meson.build
index 96f626aef3..bb08e506a8 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -100,7 +100,6 @@ gtk_private_sources = files([
'gtkcssvalue.c',
'gtkcsswidgetnode.c',
'gtkdrop.c',
- 'gtkfilechooserembed.c',
'gtkfilechooserentry.c',
'gtkfilechoosererrorstack.c',
'gtkfilechoosernativeportal.c',
diff --git a/gtk/ui/gtkfilechooserdialog.ui b/gtk/ui/gtkfilechooserdialog.ui
index 99b3700c69..c48e07f2b5 100644
--- a/gtk/ui/gtkfilechooserdialog.ui
+++ b/gtk/ui/gtkfilechooserdialog.ui
@@ -20,7 +20,6 @@
<object class="GtkFileChooserWidget" id="widget">
<property name="hexpand">1</property>
<property name="vexpand">1</property>
- <signal name="response-requested" handler="file_chooser_widget_response_requested" swapped="no"/>
</object>
</child>
</object>