touchpad: Ignore fingers in button area for 2 finger scroll

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Hans de Goede 2014-04-08 08:34:20 +02:00
parent bfe05ed4a6
commit 55b2ea65f3

View file

@ -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) {