Commit 8e5be43e authored by Carlos Garnacho's avatar Carlos Garnacho

gtkgesturedrag: 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.
parent 5d17338b
......@@ -56,6 +56,26 @@ static guint signals[N_SIGNALS] = { 0 };
G_DEFINE_TYPE_WITH_PRIVATE (GtkGestureDrag, gtk_gesture_drag, GTK_TYPE_GESTURE_SINGLE)
static gboolean
gtk_gesture_drag_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_drag_parent_class)->filter_event (controller, event);
}
static void
gtk_gesture_drag_begin (GtkGesture *gesture,
GdkEventSequence *sequence)
......@@ -110,6 +130,9 @@ static void
gtk_gesture_drag_class_init (GtkGestureDragClass *klass)
{
GtkGestureClass *gesture_class = GTK_GESTURE_CLASS (klass);
GtkEventControllerClass *event_controller_class = GTK_EVENT_CONTROLLER_CLASS (klass);
event_controller_class->filter_event = gtk_gesture_drag_filter_event;
gesture_class->begin = gtk_gesture_drag_begin;
gesture_class->update = gtk_gesture_drag_update;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment