[gtk/matthiasc/for-master: 5/7] button: Fix an event handling gotcha



commit e662438675b66c35d70f977e82885e9298e04a07
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Mar 28 14:33:01 2020 -0400

    button: Fix an event handling gotcha
    
    We no longer translate event coordinates in-place,
    so gdk_event_get_position() returns surface-relative
    coordinates, not widget-relative ones. Just use the
    coordinates we are given.

 gtk/gtkbutton.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index 7da11fb7d5..d633c77fe6 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -306,10 +306,11 @@ click_pressed_cb (GtkGestureClick *gesture,
 }
 
 static gboolean
-touch_release_in_button (GtkButton *button)
+touch_release_in_button (GtkButton *button,
+                         double     x,
+                         double     y)
 {
   GdkEvent *event;
-  gdouble x, y;
 
   event = gtk_get_current_event ();
 
@@ -322,8 +323,6 @@ touch_release_in_button (GtkButton *button)
       return FALSE;
     }
 
-  gdk_event_get_position (event, &x, &y);
-
   gdk_event_unref (event);
 
   if (gtk_widget_contains (GTK_WIDGET (button), x, y))
@@ -346,7 +345,7 @@ click_released_cb (GtkGestureClick *gesture,
   gtk_button_do_release (button,
                          gtk_widget_is_sensitive (GTK_WIDGET (button)) &&
                          (priv->in_button ||
-                          touch_release_in_button (button)));
+                          touch_release_in_button (button, x, y)));
 
   sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
 


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