From: Hans de Goede Date: Tue, 8 Apr 2014 06:34:20 +0000 (+0200) Subject: touchpad: Ignore fingers in button area for 2 finger scroll X-Git-Tag: 0.3.0~39^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=55b2ea65f3c4e592a02344f9d8185f59a0394cfb;p=platform%2Fupstream%2Flibinput.git touchpad: Ignore fingers in button area for 2 finger scroll Signed-off-by: Hans de Goede Reviewed-by: Peter Hutterer --- diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index c9a142f4..c61d8730 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -446,7 +446,7 @@ tp_post_twofinger_scroll(struct tp_dispatch *tp, uint32_t time) double tmpx, tmpy; tp_for_each_touch(tp, t) { - if (t->dirty) { + if (tp_touch_active(tp, t) && t->dirty) { nchanged++; tp_get_delta(t, &tmpx, &tmpy); @@ -499,12 +499,21 @@ tp_post_twofinger_scroll(struct tp_dispatch *tp, uint32_t time) static int tp_post_scroll_events(struct tp_dispatch *tp, uint32_t time) { + struct tp_touch *t; + int nfingers_down = 0; + /* don't scroll if a clickpad is held down */ if (tp->buttons.is_clickpad && (tp->buttons.state || tp->buttons.old_state)) return 0; - if (tp->nfingers_down != 2) { + /* Only count active touches for 2 finger scrolling */ + tp_for_each_touch(tp, t) { + if (tp_touch_active(tp, t)) + nfingers_down++; + } + + if (nfingers_down != 2) { /* terminate scrolling with a zero scroll event to notify * caller that it really ended now */ if (tp->scroll.state != SCROLL_STATE_NONE) {