summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-06-24 01:32:31 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-06-24 22:40:29 +0000
commite40758ec261abb842b27fa4173659957b46d6168 (patch)
treec4ba10746c55c97fb8b5b9e74fb7d0a32d8aa721
parentce19f5a282287b4e39f6c5e2e35c6196e6cbae8c (diff)
downloadgtk+-e40758ec261abb842b27fa4173659957b46d6168.tar.gz
file chooser: Avoid use of popup-menu
-rw-r--r--gtk/gtkfilechooserwidget.c26
-rw-r--r--gtk/ui/gtkfilechooserwidget.ui1
2 files changed, 23 insertions, 4 deletions
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index 857699d7f6..749eaa3371 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -83,6 +83,10 @@
#include "gtkentryprivate.h"
#include "gtkroot.h"
#include "gtkbinlayout.h"
+#include "gtkshortcutcontroller.h"
+#include "gtkshortcuttrigger.h"
+#include "gtkshortcutaction.h"
+#include "gtkshortcut.h"
#include <cairo-gobject.h>
@@ -2234,9 +2238,11 @@ file_list_show_popover (GtkFileChooserWidget *impl,
/* Callback used for the GtkWidget::popup-menu signal of the file list */
static gboolean
-list_popup_menu_cb (GtkWidget *widget,
- GtkFileChooserWidget *impl)
+list_popup_menu_cb (GtkWidget *widget,
+ GVariant *args,
+ gpointer data)
{
+ GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (data);
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (impl);
graphene_rect_t bounds;
@@ -8445,7 +8451,6 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
/* And a *lot* of callbacks to bind ... */
gtk_widget_class_bind_template_callback (widget_class, file_list_drag_drop_cb);
gtk_widget_class_bind_template_callback (widget_class, file_list_drag_data_received_cb);
- gtk_widget_class_bind_template_callback (widget_class, list_popup_menu_cb);
gtk_widget_class_bind_template_callback (widget_class, file_list_query_tooltip_cb);
gtk_widget_class_bind_template_callback (widget_class, list_row_activated);
gtk_widget_class_bind_template_callback (widget_class, file_list_drag_begin_cb);
@@ -8485,8 +8490,23 @@ post_process_ui (GtkFileChooserWidget *impl)
GtkCellRenderer *cell;
GList *cells;
GFile *file;
+ GtkEventController *controller;
+ GtkShortcutTrigger *trigger;
+ GtkShortcutAction *action;
+ GtkShortcut *shortcut;
/* Setup file list treeview */
+ controller = gtk_shortcut_controller_new ();
+ trigger = gtk_alternative_trigger_new (gtk_keyval_trigger_new (GDK_KEY_F10, GDK_SHIFT_MASK),
+ gtk_keyval_trigger_new (GDK_KEY_Menu, 0));
+
+ action = gtk_callback_action_new (list_popup_menu_cb, impl, NULL);
+ shortcut = gtk_shortcut_new (trigger, action);
+ gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller),
+ shortcut);
+ g_object_unref (shortcut);
+ gtk_widget_add_controller (priv->browse_files_tree_view, controller);
+
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->browse_files_tree_view));
gtk_tree_selection_set_select_function (selection,
list_select_func,
diff --git a/gtk/ui/gtkfilechooserwidget.ui b/gtk/ui/gtkfilechooserwidget.ui
index 623bd86aec..e9c82d434a 100644
--- a/gtk/ui/gtkfilechooserwidget.ui
+++ b/gtk/ui/gtkfilechooserwidget.ui
@@ -161,7 +161,6 @@
<signal name="drag-begin" handler="file_list_drag_begin_cb" swapped="no"/>
<signal name="drag-motion" handler="file_list_drag_motion_cb" swapped="no"/>
<signal name="drag-end" handler="file_list_drag_end_cb" swapped="no"/>
- <signal name="popup-menu" handler="list_popup_menu_cb" swapped="no"/>
<signal name="query-tooltip" handler="file_list_query_tooltip_cb" swapped="no"/>
<signal name="row-activated" handler="list_row_activated" swapped="no"/>
<signal name="cursor-changed" handler="list_cursor_changed" swapped="no"/>