[gtk+] treeview: Stop using ::button-press-event
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] treeview: Stop using ::button-press-event
- Date: Tue, 16 Jan 2018 19:21:53 +0000 (UTC)
commit 472f5e4b13254d70752707b482ced662789472be
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Jan 15 22:52:00 2018 -0500
treeview: Stop using ::button-press-event
We can just use a gesture here.
gtk/gtktreeview.c | 38 ++++++++++++++++++++++++--------------
1 files changed, 24 insertions(+), 14 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 65e47cf..d829f0c 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -811,8 +811,10 @@ static void gtk_tree_view_search_activate (GtkEntry *entry
static gboolean gtk_tree_view_real_search_enable_popdown(gpointer data);
static void gtk_tree_view_search_enable_popdown (GtkWidget *widget,
gpointer data);
-static gboolean gtk_tree_view_search_button_press_event (GtkWidget *widget,
- GdkEventButton *event,
+static void gtk_tree_view_search_pressed_cb (GtkGesture *gesture,
+ int n_press,
+ double x,
+ double y,
GtkTreeView *tree_view);
static void gtk_tree_view_search_scroll_event (GtkWidget *entry,
gdouble dx,
@@ -10651,6 +10653,7 @@ gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view)
GtkWidget *frame, *vbox, *toplevel;
GdkDisplay *display;
GtkEventController *controller;
+ GtkGesture *gesture;
if (tree_view->priv->search_custom_entry_set)
return;
@@ -10688,9 +10691,12 @@ gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view)
g_signal_connect (tree_view->priv->search_window, "key-press-event",
G_CALLBACK (gtk_tree_view_search_key_press_event),
tree_view);
- g_signal_connect (tree_view->priv->search_window, "button-press-event",
- G_CALLBACK (gtk_tree_view_search_button_press_event),
- tree_view);
+ gesture = gtk_gesture_multi_press_new (tree_view->priv->search_window);
+ g_object_set_data_full (G_OBJECT (tree_view->priv->search_window), "gesture",
+ gesture, g_object_unref);
+ g_signal_connect (gesture, "pressed",
+ G_CALLBACK (gtk_tree_view_search_pressed_cb), tree_view);
+
controller = gtk_event_controller_scroll_new (tree_view->priv->search_window,
GTK_EVENT_CONTROLLER_SCROLL_VERTICAL);
g_object_set_data_full (G_OBJECT (tree_view->priv->search_window), "scroll",
@@ -14436,19 +14442,23 @@ gtk_tree_view_search_enable_popdown (GtkWidget *widget,
g_source_set_name_by_id (id, "[gtk+] gtk_tree_view_real_search_enable_popdown");
}
-static gboolean
-gtk_tree_view_search_button_press_event (GtkWidget *widget,
- GdkEventButton *event,
- GtkTreeView *tree_view)
+static void
+gtk_tree_view_search_pressed_cb (GtkGesture *gesture,
+ int n_press,
+ double x,
+ double y,
+ GtkTreeView *tree_view)
{
GdkDevice *keyb_device;
+ GdkEventSequence *sequence;
+ const GdkEvent *event;
+ GtkWidget *widget;
- g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
-
- keyb_device = gdk_device_get_associated_device (gdk_event_get_device ((GdkEvent *) event));
+ sequence = gtk_gesture_get_last_updated_sequence (gesture);
+ event = gtk_gesture_get_last_event (gesture, sequence);
+ keyb_device = gdk_device_get_associated_device (gdk_event_get_device (event));
+ widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture));
gtk_tree_view_search_window_hide (widget, tree_view, keyb_device);
-
- return TRUE;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]