diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index 756d2839..f15cfef6 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -955,8 +955,11 @@ tp_need_motion_history_reset(struct tp_dispatch *tp) { bool rc = false; - /* semi-mt finger postions may "jump" when nfingers changes */ - if (tp->semi_mt && tp->nfingers_down != tp->old_nfingers_down) + /* Semi-mt finger postions may "jump" when nfingers changes. And on + * a non-clickpad the only reason to have more than one finger down + * is scrolling/gesture, so a reset just makes things sane again */ + if ((tp->semi_mt || !tp->buttons.is_clickpad) && + tp->nfingers_down != tp->old_nfingers_down) return true; /* if we're transitioning between slots and fake touches in either