diff options
author | José Expósito <jose.exposito89@gmail.com> | 2021-06-27 11:49:24 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2022-01-26 22:49:53 +0100 |
commit | 331f1ee722b1c684ab8109a2ad4957d23c464253 (patch) | |
tree | 7c7f4e18da719c4c76ae577d0b7b72084ea730b2 | |
parent | 0f351508bce14d612ff349491d3d4bfa466d47ee (diff) | |
download | gtk+-331f1ee722b1c684ab8109a2ad4957d23c464253.tar.gz |
gdk/events: Add hold GdkEvent
Allow to create hold events as well as the required functions to get
information about the event: gesture phase, finger count, etc
Part-of: <!3454>
-rw-r--r-- | gdk/gdkevents.c | 30 | ||||
-rw-r--r-- | gdk/gdkevents.h | 3 | ||||
-rw-r--r-- | gdk/gdkeventsprivate.h | 9 |
3 files changed, 39 insertions, 3 deletions
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 454e69ed64..127e92e547 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -2496,7 +2496,8 @@ static const GdkEventTypeInfo gdk_touchpad_event_info = { GDK_DEFINE_EVENT_TYPE (GdkTouchpadEvent, gdk_touchpad_event, &gdk_touchpad_event_info, GDK_EVENT_TYPE_SLOT (GDK_TOUCHPAD_SWIPE) - GDK_EVENT_TYPE_SLOT (GDK_TOUCHPAD_PINCH)) + GDK_EVENT_TYPE_SLOT (GDK_TOUCHPAD_PINCH) + GDK_EVENT_TYPE_SLOT (GDK_TOUCHPAD_HOLD)) GdkEvent * gdk_touchpad_event_new_swipe (GdkSurface *surface, @@ -2570,6 +2571,27 @@ gdk_touchpad_event_new_pinch (GdkSurface *surface, return (GdkEvent *) self; } +GdkEvent * +gdk_touchpad_event_new_hold (GdkSurface *surface, + GdkDevice *device, + guint32 time, + GdkModifierType state, + GdkTouchpadGesturePhase phase, + double x, + double y, + int n_fingers) +{ + GdkTouchpadEvent *self = gdk_event_alloc (GDK_TOUCHPAD_HOLD, surface, device, time); + + self->state = state; + self->phase = phase; + self->x = x; + self->y = y; + self->n_fingers = n_fingers; + + return (GdkEvent *) self; +} + /** * gdk_touchpad_event_get_gesture_phase: * @event: (type GdkTouchpadEvent): a touchpad event @@ -2585,7 +2607,8 @@ gdk_touchpad_event_get_gesture_phase (GdkEvent *event) g_return_val_if_fail (GDK_IS_EVENT (event), 0); g_return_val_if_fail (GDK_IS_EVENT_TYPE (event, GDK_TOUCHPAD_PINCH) || - GDK_IS_EVENT_TYPE (event, GDK_TOUCHPAD_SWIPE), 0); + GDK_IS_EVENT_TYPE (event, GDK_TOUCHPAD_SWIPE) || + GDK_IS_EVENT_TYPE (event, GDK_TOUCHPAD_HOLD), 0); return self->phase; } @@ -2605,7 +2628,8 @@ gdk_touchpad_event_get_n_fingers (GdkEvent *event) g_return_val_if_fail (GDK_IS_EVENT (event), 0); g_return_val_if_fail (GDK_IS_EVENT_TYPE (event, GDK_TOUCHPAD_PINCH) || - GDK_IS_EVENT_TYPE (event, GDK_TOUCHPAD_SWIPE), 0); + GDK_IS_EVENT_TYPE (event, GDK_TOUCHPAD_SWIPE) || + GDK_IS_EVENT_TYPE (event, GDK_TOUCHPAD_HOLD), 0); return self->n_fingers; } diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h index 748341e80c..99fecbc689 100644 --- a/gdk/gdkevents.h +++ b/gdk/gdkevents.h @@ -169,6 +169,8 @@ typedef struct _GdkTouchpadEvent GdkTouchpadEvent; * @GDK_PAD_RING: A tablet pad axis event from a "ring". * @GDK_PAD_STRIP: A tablet pad axis event from a "strip". * @GDK_PAD_GROUP_MODE: A tablet pad group mode change. + * @GDK_TOUCHPAD_HOLD: A touchpad hold gesture event, the current state + * is determined by its phase field. Since: 4.6 * @GDK_EVENT_LAST: marks the end of the GdkEventType enumeration. * * Specifies the type of the event. @@ -203,6 +205,7 @@ typedef enum GDK_PAD_RING, GDK_PAD_STRIP, GDK_PAD_GROUP_MODE, + GDK_TOUCHPAD_HOLD, GDK_EVENT_LAST /* helper variable for decls */ } GdkEventType; diff --git a/gdk/gdkeventsprivate.h b/gdk/gdkeventsprivate.h index 065cf1f3d3..a16fc0f654 100644 --- a/gdk/gdkeventsprivate.h +++ b/gdk/gdkeventsprivate.h @@ -533,6 +533,15 @@ GdkEvent * gdk_touchpad_event_new_pinch (GdkSurface *surface, double scale, double angle_delta); +GdkEvent * gdk_touchpad_event_new_hold (GdkSurface *surface, + GdkDevice *device, + guint32 time, + GdkModifierType state, + GdkTouchpadGesturePhase phase, + double x, + double y, + int n_fingers); + GdkEvent * gdk_pad_event_new_ring (GdkSurface *surface, GdkDevice *device, guint32 time, |