Thumb detection interfered with gestures a fair bit but it shouldn't. A pinch
gesture with a thumb is a fairly natural move so we shouldn't cancel that.
A swipe gesture with a thumb on the touchpad - well, don't do that. No need
for code here.

Reported-by: Carlos Garnacho <carl...@gnome.org>
Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
---
 src/evdev-mt-touchpad-gestures.c | 19 -------------------
 src/evdev-mt-touchpad.c          |  2 +-
 src/evdev-mt-touchpad.h          |  1 -
 3 files changed, 1 insertion(+), 21 deletions(-)

diff --git a/src/evdev-mt-touchpad-gestures.c b/src/evdev-mt-touchpad-gestures.c
index 768d3ec..a23b5ce 100644
--- a/src/evdev-mt-touchpad-gestures.c
+++ b/src/evdev-mt-touchpad-gestures.c
@@ -546,34 +546,15 @@ tp_gesture_handle_state(struct tp_dispatch *tp, uint64_t 
time)
 {
        unsigned int active_touches = 0;
        struct tp_touch *t;
-       uint32_t old_thumb_mask, thumb_mask = 0;
        int i = 0;
 
        tp_for_each_touch(tp, t) {
                if (tp_touch_active(tp, t))
                        active_touches++;
 
-               if (t->is_thumb)
-                       thumb_mask |= 1 << i;
                i++;
        }
 
-       old_thumb_mask = tp->gesture.thumb_mask;
-       tp->gesture.thumb_mask = thumb_mask;
-
-       /* active touches does not include thumb touches, need to count those
-        * separately, in a bitmask.
-        * then, if the finger count changes and/or the thumb count changes
-        * -> cancel gesture.
-        */
-       if (thumb_mask != old_thumb_mask) {
-               /* if a thumb is detected during a gesture, that gesture is
-                * cancelled and the user effectively needs to restart. we
-                * could be smarter, but the complexity isn't worth it */
-               tp_gesture_cancel(tp, time);
-               return;
-       }
-
        if (active_touches != tp->gesture.finger_count) {
                /* If all fingers are lifted immediately end the gesture */
                if (active_touches == 0) {
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index bbba665..cbe8bed 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -629,7 +629,7 @@ tp_thumb_detect(struct tp_dispatch *tp, struct tp_touch *t)
         * - clickfinger must ignore this touch for finger count
         * - software buttons are unaffected
         * - edge scrolling unaffected
-        * - gestures: cancel
+        * - gestures: unaffected
         * - tapping: honour thumb on begin, ignore it otherwise for now,
         *   this gets a tad complicated otherwise
         */
diff --git a/src/evdev-mt-touchpad.h b/src/evdev-mt-touchpad.h
index eda17a9..61c4166 100644
--- a/src/evdev-mt-touchpad.h
+++ b/src/evdev-mt-touchpad.h
@@ -237,7 +237,6 @@ struct tp_dispatch {
                double prev_scale;
                double angle;
                struct device_float_coords center;
-               uint32_t thumb_mask;
        } gesture;
 
        struct {
-- 
2.4.3

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to