diff options
author | Ernestas Kulik <ernestask@gnome.org> | 2018-05-29 14:43:06 +0300 |
---|---|---|
committer | Ernestas Kulik <ernestask@gnome.org> | 2018-05-29 14:49:29 +0300 |
commit | 7ba0965b465e47ea5cdc801fdcd26c8567924255 (patch) | |
tree | 652210b3cdb5dedf416726cd6bb7494f7e703ee6 | |
parent | 8d6806ccb25a2bf1a5ee66743e6aa7f9a7f8b8c8 (diff) | |
download | gtk+-gesture-docs.tar.gz |
gesturemultipress: Don’t fire ::released if not interpretedgesture-docs
After a cancellation due to a grab in ::pressed, ::released is fired
erroneously, given that the gesture is no longer being interpreted at
that point. This commit adds a check for the return value of
gtk_gesture_get_point() before firing ::released.
-rw-r--r-- | gtk/gtkgesturemultipress.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gtk/gtkgesturemultipress.c b/gtk/gtkgesturemultipress.c index db654036e5..d6dc115d5f 100644 --- a/gtk/gtkgesturemultipress.c +++ b/gtk/gtkgesturemultipress.c @@ -274,13 +274,16 @@ gtk_gesture_multi_press_end (GtkGesture *gesture, GtkGestureMultiPressPrivate *priv; GdkEventSequence *current; gdouble x, y; + gboolean interpreted; + GtkEventSequenceState state; multi_press = GTK_GESTURE_MULTI_PRESS (gesture); priv = gtk_gesture_multi_press_get_instance_private (multi_press); current = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); - gtk_gesture_get_point (gesture, current, &x, &y); + interpreted = gtk_gesture_get_point (gesture, current, &x, &y); + state = gtk_gesture_get_sequence_state (gesture, current); - if (gtk_gesture_get_sequence_state (gesture, current) != GTK_EVENT_SEQUENCE_DENIED) + if (state != GTK_EVENT_SEQUENCE_DENIED && interpreted) g_signal_emit (gesture, signals[RELEASED], 0, priv->n_release, x, y); priv->n_release = 0; |