mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 19:00:08 +00:00
gtkgestureswipe: Handle touchpad swipe events
These will only trigger the gesture if it's been created with the same GtkGesture::n-points than n_fingers in the event.
This commit is contained in:
parent
5f68a2877d
commit
5d17338b4d
@ -77,6 +77,26 @@ gtk_gesture_swipe_finalize (GObject *object)
|
||||
G_OBJECT_CLASS (gtk_gesture_swipe_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_gesture_swipe_filter_event (GtkEventController *controller,
|
||||
const GdkEvent *event)
|
||||
{
|
||||
/* Let touchpad swipe events go through, only if they match n-points */
|
||||
if (event->type == GDK_TOUCHPAD_SWIPE)
|
||||
{
|
||||
guint n_points;
|
||||
|
||||
g_object_get (G_OBJECT (controller), "n-points", &n_points, NULL);
|
||||
|
||||
if (event->touchpad_swipe.n_fingers == n_points)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return GTK_EVENT_CONTROLLER_CLASS (gtk_gesture_swipe_parent_class)->filter_event (controller, event);
|
||||
}
|
||||
|
||||
static void
|
||||
_gtk_gesture_swipe_clear_backlog (GtkGestureSwipe *gesture,
|
||||
guint32 evtime)
|
||||
@ -188,10 +208,13 @@ static void
|
||||
gtk_gesture_swipe_class_init (GtkGestureSwipeClass *klass)
|
||||
{
|
||||
GtkGestureClass *gesture_class = GTK_GESTURE_CLASS (klass);
|
||||
GtkEventControllerClass *event_controller_class = GTK_EVENT_CONTROLLER_CLASS (klass);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = gtk_gesture_swipe_finalize;
|
||||
|
||||
event_controller_class->filter_event = gtk_gesture_swipe_filter_event;
|
||||
|
||||
gesture_class->update = gtk_gesture_swipe_update;
|
||||
gesture_class->end = gtk_gesture_swipe_end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user