gdkevent: Give touchpad hold events a sequence
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 5 Aug 2022 09:35:28 +0000 (11:35 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Fri, 5 Aug 2022 17:25:13 +0000 (19:25 +0200)
Following what was done for pinch/swipe events, give hold gestures their
own distinct sequence as well. Without this it was NULL, which was already
distinct to other touchpad gestures.

gdk/gdkevents.c
gdk/gdkeventsprivate.h
gdk/wayland/gdkdevice-wayland.c
gtk/gtkmain.c

index 044eb7229284105673e62e8f696276a17a0b71fc..ba185c2ffbe360a13e5abaf18d4a84bf8df32a82 100644 (file)
@@ -2611,6 +2611,7 @@ gdk_touchpad_event_new_pinch (GdkSurface              *surface,
 
 GdkEvent *
 gdk_touchpad_event_new_hold (GdkSurface              *surface,
+                             GdkEventSequence        *sequence,
                              GdkDevice               *device,
                              guint32                  time,
                              GdkModifierType          state,
@@ -2623,6 +2624,7 @@ gdk_touchpad_event_new_hold (GdkSurface              *surface,
 
   self->state = state;
   self->phase = phase;
+  self->sequence = sequence;
   self->x = x;
   self->y = y;
   self->n_fingers = n_fingers;
index 3d6c507a0e07fd401121f87edf344db3c00eea4d..661de6baa8aa5422741c976808989f8b7d6ec884 100644 (file)
@@ -533,6 +533,7 @@ GdkEvent * gdk_touchpad_event_new_pinch (GdkSurface              *surface,
                                          double                   angle_delta);
 
 GdkEvent * gdk_touchpad_event_new_hold  (GdkSurface              *surface,
+                                         GdkEventSequence        *sequence,
                                          GdkDevice               *device,
                                          guint32                  time,
                                          GdkModifierType          state,
index e407ce811ec7d2fe070ab13e8107dbcc4de81ed9..35a0fcc30d7a512e1364bbf81cf4bad81a3a56c1 100644 (file)
@@ -2840,7 +2840,11 @@ emit_gesture_hold_event (GdkWaylandSeat          *seat,
 
   seat->pointer_info.time = _time;
 
+  if (phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN)
+    seat->pointer_info.touchpad_event_sequence++;
+
   event = gdk_touchpad_event_new_hold (seat->pointer_info.focus,
+                                       GDK_SLOT_TO_EVENT_SEQUENCE (seat->pointer_info.touchpad_event_sequence),
                                        seat->logical_pointer,
                                        _time,
                                        device_get_modifiers (seat->logical_pointer),
index 80c7542b03ed388e10a49576c20873f32ddabf68..de77602d9f97f8a6d5d0ea83759818b2a0834ed4 100644 (file)
@@ -973,6 +973,7 @@ rewrite_event_for_surface (GdkEvent  *event,
                                            gdk_touchpad_event_get_pinch_angle_delta (event));
     case GDK_TOUCHPAD_HOLD:
       return gdk_touchpad_event_new_hold (new_surface,
+                                          gdk_event_get_event_sequence (event),
                                           gdk_event_get_device (event),
                                           gdk_event_get_time (event),
                                           gdk_event_get_modifier_state (event),