If a finger is resting in the software button area, it must not be counted towards the gesture. So a two-finger movement must be a scroll event, not a three-finger pinch.
Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> --- test/gestures.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/test/gestures.c b/test/gestures.c index 3f7ee83..c814911 100644 --- a/test/gestures.c +++ b/test/gestures.c @@ -1153,6 +1153,63 @@ START_TEST(gestures_time_usec) } END_TEST +START_TEST(gestures_3fg_buttonarea_scroll) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + + if (libevdev_get_num_slots(dev->evdev) < 3) + return; + + litest_enable_buttonareas(dev); + litest_enable_2fg_scroll(dev); + litest_drain_events(li); + + litest_touch_down(dev, 0, 40, 20); + litest_touch_down(dev, 1, 30, 20); + /* third finger in btnarea */ + litest_touch_down(dev, 2, 50, 99); + libinput_dispatch(li); + litest_touch_move_two_touches(dev, + 40, 20, + 30, 20, + 0, 40, + 4, 2); + + litest_touch_up(dev, 0); + litest_touch_up(dev, 1); + libinput_dispatch(li); + litest_assert_scroll(li, LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL, 4); +} +END_TEST + +START_TEST(gestures_3fg_buttonarea_scroll_btntool) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + + if (libevdev_get_num_slots(dev->evdev) > 2) + return; + + litest_enable_buttonareas(dev); + litest_enable_2fg_scroll(dev); + litest_drain_events(li); + + /* first finger in btnarea */ + litest_touch_down(dev, 0, 20, 99); + litest_touch_down(dev, 1, 30, 20); + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); + litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + libinput_dispatch(li); + litest_touch_move_to(dev, 1, 30, 20, 30, 70, 10, 1); + + litest_touch_up(dev, 1); + libinput_dispatch(li); + litest_assert_scroll(li, LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL, 4); +} +END_TEST + void litest_setup_tests(void) { @@ -1173,5 +1230,8 @@ litest_setup_tests(void) litest_add_ranged("gestures:pinch", gestures_pinch_4fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals); litest_add_ranged("gestures:pinch", gestures_spread, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals); + litest_add("gestures:swipe", gestures_3fg_buttonarea_scroll, LITEST_CLICKPAD, LITEST_SINGLE_TOUCH); + litest_add("gestures:swipe", gestures_3fg_buttonarea_scroll_btntool, LITEST_CLICKPAD, LITEST_SINGLE_TOUCH); + litest_add("gesture:time", gestures_time_usec, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH); } -- 2.5.0 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel