summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErnestas Kulik <ernestask@gnome.org>2018-05-29 14:43:06 +0300
committerErnestas Kulik <ernestask@gnome.org>2018-05-29 14:49:29 +0300
commit7ba0965b465e47ea5cdc801fdcd26c8567924255 (patch)
tree652210b3cdb5dedf416726cd6bb7494f7e703ee6
parent8d6806ccb25a2bf1a5ee66743e6aa7f9a7f8b8c8 (diff)
downloadgtk+-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.c7
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;