diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-12-15 20:11:51 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-12-15 21:58:57 -0500 |
commit | 2772ff624f24297caa7e08871c294a68c7528fb4 (patch) | |
tree | 6126bcc23af9320a81e2876c56c5d5c377665b90 /gdk/gdkevents.c | |
parent | 69b160cfe8e9f9307fb746c4ecc3c00d17e0af92 (diff) | |
download | gtk+-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.c | 80 |
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; |