[gnome-todo] task-row: Replace :event by GtkGestureMultiPress



commit 7041d2ea2efe743b24b6e8831b0929c59f98fd1b
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Mon Nov 5 21:40:13 2018 -0200

    task-row: Replace :event by GtkGestureMultiPress
    
    The GtkWidget:event signal does not exist anymore, so let's port
    this code to GtkGestureMultiPress and be the good citizens.

 data/ui/task-row.ui               | 16 ++++++++++++++--
 src/task-list-view/gtd-task-row.c | 29 ++++++++++++++++-------------
 2 files changed, 30 insertions(+), 15 deletions(-)
---
diff --git a/data/ui/task-row.ui b/data/ui/task-row.ui
index 1291bfc..f06b639 100644
--- a/data/ui/task-row.ui
+++ b/data/ui/task-row.ui
@@ -51,7 +51,13 @@
                     <signal name="drag-end" handler="on_drag_end_cb" object="GtdTaskRow" swapped="no" />
                     <signal name="drag-data-get" handler="on_drag_data_get_cb" object="GtdTaskRow" 
swapped="no" />
                     <signal name="drag-failed" handler="on_drag_failed_cb" object="GtdTaskRow" swapped="no" 
/>
-                    <signal name="event" handler="on_button_press_event_cb" object="GtdTaskRow" swapped="no" 
/>
+
+                    <child>
+                      <object class="GtkGestureMultiPress">
+                        <property name="propagation-phase">capture</property>
+                        <signal name="pressed" handler="on_button_press_event_cb" object="GtdTaskRow" 
swapped="no" />
+                      </object>
+                    </child>
                     <style>
                       <class name="dim-label" />
                     </style>
@@ -80,7 +86,13 @@
                     <signal name="drag-begin" handler="on_drag_begin_cb" object="GtdTaskRow" swapped="no" />
                     <signal name="drag-end" handler="on_drag_end_cb" object="GtdTaskRow" swapped="no" />
                     <signal name="drag-failed" handler="on_drag_failed_cb" object="GtdTaskRow" swapped="no" 
/>
-                    <signal name="event" handler="on_button_press_event_cb" object="GtdTaskRow" swapped="no" 
/>
+
+                    <child>
+                      <object class="GtkGestureMultiPress">
+                        <property name="propagation-phase">capture</property>
+                        <signal name="pressed" handler="on_button_press_event_cb" object="GtdTaskRow" 
swapped="no" />
+                      </object>
+                    </child>
 
                     <!-- Task title entry -->
                     <child>
diff --git a/src/task-list-view/gtd-task-row.c b/src/task-list-view/gtd-task-row.c
index 2088650..ab74e18 100644
--- a/src/task-list-view/gtd-task-row.c
+++ b/src/task-list-view/gtd-task-row.c
@@ -262,32 +262,35 @@ on_remove_task_cb (GtdEditPane *edit_panel,
   g_signal_emit (self, signals[REMOVE_TASK], 0);
 }
 
-static gboolean
-on_button_press_event_cb (GtkWidget  *widget,
-                          GdkEvent   *event,
-                          GtdTaskRow *self)
+static void
+on_button_press_event_cb (GtkGestureMultiPress *gesture,
+                          gint                  n_press,
+                          gdouble               x,
+                          gdouble               y,
+                          GtdTaskRow           *self)
 {
-  gdouble event_x;
-  gdouble event_y;
+  GtkWidget *widget;
   gint real_x;
   gint real_y;
 
-  if (gdk_event_get_event_type (event) != GDK_BUTTON_PRESS)
-    return GDK_EVENT_PROPAGATE;
-
-  gdk_event_get_coords (event, &event_x, &event_y);
+  widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture));
 
   gtk_widget_translate_coordinates (widget,
                                     GTK_WIDGET (self),
-                                    event_x,
-                                    event_y,
+                                    x,
+                                    y,
                                     &real_x,
                                     &real_y);
 
   self->clicked_x = real_x;
   self->clicked_y = real_y;
 
-  return GDK_EVENT_PROPAGATE;
+  GTD_TRACE_MSG ("GtkGestureMultiPress:pressed received from a %s at %.1f,%.1f (%d,%d)",
+                 G_OBJECT_TYPE_NAME (widget),
+                 x,
+                 y,
+                 real_x,
+                 real_y);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]