summaryrefslogtreecommitdiff
path: root/gdk/gdkevents.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-12-15 20:11:51 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-12-15 21:58:57 -0500
commit2772ff624f24297caa7e08871c294a68c7528fb4 (patch)
tree6126bcc23af9320a81e2876c56c5d5c377665b90 /gdk/gdkevents.c
parent69b160cfe8e9f9307fb746c4ecc3c00d17e0af92 (diff)
downloadgtk+-2772ff624f24297caa7e08871c294a68c7528fb4.tar.gz
gdk: Prepare touchpad events for sequences
It makes sense to connect the begin/update/end events for touchpad swipes and pinches in a sequence. This commit adds the plumbing for it, but not backends are setting sequences yet.
Diffstat (limited to 'gdk/gdkevents.c')
-rw-r--r--gdk/gdkevents.c80
1 files changed, 53 insertions, 27 deletions
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c
index 71774ae50e..d0680e3696 100644
--- a/gdk/gdkevents.c
+++ b/gdk/gdkevents.c
@@ -2476,6 +2476,14 @@ gdk_touchpad_event_get_state (GdkEvent *event)
return self->state;
}
+static GdkEventSequence *
+gdk_touchpad_event_get_sequence (GdkEvent *event)
+{
+ GdkTouchpadEvent *self = (GdkTouchpadEvent *) event;
+
+ return self->sequence;
+}
+
static gboolean
gdk_touchpad_event_get_position (GdkEvent *event,
double *x,
@@ -2495,7 +2503,7 @@ static const GdkEventTypeInfo gdk_touchpad_event_info = {
NULL,
gdk_touchpad_event_get_state,
gdk_touchpad_event_get_position,
- NULL,
+ gdk_touchpad_event_get_sequence,
NULL,
NULL,
};
@@ -2506,19 +2514,28 @@ GDK_DEFINE_EVENT_TYPE (GdkTouchpadEvent, gdk_touchpad_event,
GDK_EVENT_TYPE_SLOT (GDK_TOUCHPAD_PINCH))
GdkEvent *
-gdk_touchpad_event_new_swipe (GdkSurface *surface,
- GdkDevice *device,
- guint32 time,
- GdkModifierType state,
- GdkTouchpadGesturePhase phase,
- double x,
- double y,
- int n_fingers,
- double dx,
- double dy)
-{
- GdkTouchpadEvent *self = gdk_event_alloc (GDK_TOUCHPAD_SWIPE, surface, device, time);
+gdk_touchpad_event_new_swipe (GdkSurface *surface,
+ GdkEventSequence *sequence,
+ GdkDevice *device,
+ guint32 time,
+ GdkModifierType state,
+ GdkTouchpadGesturePhase phase,
+ double x,
+ double y,
+ int n_fingers,
+ double dx,
+ double dy)
+{
+ GdkTouchpadEvent *self;
+
+ g_return_val_if_fail (phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN ||
+ phase == GDK_TOUCHPAD_GESTURE_PHASE_END ||
+ phase == GDK_TOUCHPAD_GESTURE_PHASE_UPDATE ||
+ phase == GDK_TOUCHPAD_GESTURE_PHASE_CANCEL, NULL);
+
+ self = gdk_event_alloc (GDK_TOUCHPAD_SWIPE, surface, device, time);
+ self->sequence = sequence;
self->state = state;
self->phase = phase;
self->x = x;
@@ -2531,21 +2548,30 @@ gdk_touchpad_event_new_swipe (GdkSurface *surface,
}
GdkEvent *
-gdk_touchpad_event_new_pinch (GdkSurface *surface,
- GdkDevice *device,
- guint32 time,
- GdkModifierType state,
- GdkTouchpadGesturePhase phase,
- double x,
- double y,
- int n_fingers,
- double dx,
- double dy,
- double scale,
- double angle_delta)
-{
- GdkTouchpadEvent *self = gdk_event_alloc (GDK_TOUCHPAD_PINCH, surface, device, time);
+gdk_touchpad_event_new_pinch (GdkSurface *surface,
+ GdkEventSequence *sequence,
+ GdkDevice *device,
+ guint32 time,
+ GdkModifierType state,
+ GdkTouchpadGesturePhase phase,
+ double x,
+ double y,
+ int n_fingers,
+ double dx,
+ double dy,
+ double scale,
+ double angle_delta)
+{
+ GdkTouchpadEvent *self;
+
+ g_return_val_if_fail (phase == GDK_TOUCHPAD_GESTURE_PHASE_BEGIN ||
+ phase == GDK_TOUCHPAD_GESTURE_PHASE_END ||
+ phase == GDK_TOUCHPAD_GESTURE_PHASE_UPDATE ||
+ phase == GDK_TOUCHPAD_GESTURE_PHASE_CANCEL, NULL);
+
+ self = gdk_event_alloc (GDK_TOUCHPAD_PINCH, surface, device, time);
+ self->sequence = sequence;
self->state = state;
self->phase = phase;
self->x = x;