gtkwidget: Do not check event sequence state before cancelling gesture
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 15 Nov 2021 22:39:48 +0000 (23:39 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 15 Nov 2021 23:41:17 +0000 (00:41 +0100)
The sequence should be cancelled from the gesture despite its current state.
Also, there was a piece of pointer emulation that was not dropped here,
maybe breaking things further for the pointer emulated touchpoint.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4387
gtk/gtkwidget.c

index 907e2004f2038c54a94b5d9edc1a43a8c98839d1..788cfb6650af0b2d22c1e170d37e0ddb704cf2fb 100644 (file)
@@ -2289,19 +2289,14 @@ _gtk_widget_cancel_sequence (GtkWidget        *widget,
                              GdkEventSequence *sequence)
 {
   GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-  gboolean emulates_pointer;
   gboolean handled = FALSE;
-  GdkEventSequence *seq;
   GList *l;
 
-  emulates_pointer = _gtk_widget_get_emulating_sequence (widget, sequence, &seq);
-
   for (l = priv->event_controllers; l; l = l->next)
     {
       GtkEventController *controller;
       GtkGesture *gesture;
 
-      seq = sequence;
       controller = l->data;
 
       if (!GTK_IS_GESTURE (controller))
@@ -2309,14 +2304,7 @@ _gtk_widget_cancel_sequence (GtkWidget        *widget,
 
       gesture = GTK_GESTURE (controller);
 
-      if (seq && emulates_pointer &&
-          !gtk_gesture_handles_sequence (gesture, seq))
-        seq = NULL;
-
-      if (!gtk_gesture_handles_sequence (gesture, seq))
-        continue;
-
-      handled |= _gtk_gesture_cancel_sequence (gesture, seq);
+      handled |= _gtk_gesture_cancel_sequence (gesture, sequence);
     }
 
   return handled;