mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 14:10:30 +00:00
gtk-demo: Add 3fg touchpad swipe handling to gestures demo
We can handle those on wayland, so we should show it's possible.
This commit is contained in:
parent
ed34be8bb3
commit
8c707e29ff
@ -13,6 +13,17 @@ static gdouble swipe_x = 0;
|
|||||||
static gdouble swipe_y = 0;
|
static gdouble swipe_y = 0;
|
||||||
static gboolean long_pressed = FALSE;
|
static gboolean long_pressed = FALSE;
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
touchpad_swipe_gesture_begin (GtkGesture *gesture,
|
||||||
|
GdkEventSequence *sequence,
|
||||||
|
GtkWidget *widget)
|
||||||
|
{
|
||||||
|
/* Disallow touchscreen events here */
|
||||||
|
if (sequence != NULL)
|
||||||
|
gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_DENIED);
|
||||||
|
return sequence == NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
swipe_gesture_swept (GtkGestureSwipe *gesture,
|
swipe_gesture_swept (GtkGestureSwipe *gesture,
|
||||||
gdouble velocity_x,
|
gdouble velocity_x,
|
||||||
@ -156,6 +167,19 @@ do_gestures (GtkWidget *do_widget)
|
|||||||
GTK_PHASE_BUBBLE);
|
GTK_PHASE_BUBBLE);
|
||||||
g_object_weak_ref (G_OBJECT (drawing_area), (GWeakNotify) g_object_unref, gesture);
|
g_object_weak_ref (G_OBJECT (drawing_area), (GWeakNotify) g_object_unref, gesture);
|
||||||
|
|
||||||
|
/* 3fg swipe for touchpads */
|
||||||
|
gesture = g_object_new (GTK_TYPE_GESTURE_SWIPE,
|
||||||
|
"widget", drawing_area,
|
||||||
|
"n-points", 3,
|
||||||
|
NULL);
|
||||||
|
g_signal_connect (gesture, "begin",
|
||||||
|
G_CALLBACK (touchpad_swipe_gesture_begin), drawing_area);
|
||||||
|
g_signal_connect (gesture, "swipe",
|
||||||
|
G_CALLBACK (swipe_gesture_swept), drawing_area);
|
||||||
|
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture),
|
||||||
|
GTK_PHASE_BUBBLE);
|
||||||
|
g_object_weak_ref (G_OBJECT (drawing_area), (GWeakNotify) g_object_unref, gesture);
|
||||||
|
|
||||||
/* Long press */
|
/* Long press */
|
||||||
gesture = gtk_gesture_long_press_new (drawing_area);
|
gesture = gtk_gesture_long_press_new (drawing_area);
|
||||||
g_signal_connect (gesture, "pressed",
|
g_signal_connect (gesture, "pressed",
|
||||||
|
Loading…
Reference in New Issue
Block a user