mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-30 01:20:21 +01:00
touchpad: only send most recent edge delta when triggering threshold
When edge scrolling is triggered by exceeding the motion threshold (5mm) we sent the whole delta as the first scroll event, causing a big jump. Instead, send only the current delta. This effectively introduces a 5mm dead zone when edge scrolling, still better than the jump. https://bugs.freedesktop.org/show_bug.cgi?id=90990 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
3195b95d1d
commit
f783dae0a7
1 changed files with 4 additions and 1 deletions
|
|
@ -353,7 +353,7 @@ tp_edge_scroll_post_events(struct tp_dispatch *tp, uint64_t time)
|
|||
struct tp_touch *t;
|
||||
enum libinput_pointer_axis axis;
|
||||
double *delta;
|
||||
struct normalized_coords normalized;
|
||||
struct normalized_coords normalized, tmp;
|
||||
const struct normalized_coords zero = { 0.0, 0.0 };
|
||||
const struct discrete_coords zero_discrete = { 0.0, 0.0 };
|
||||
|
||||
|
|
@ -402,11 +402,14 @@ tp_edge_scroll_post_events(struct tp_dispatch *tp, uint64_t time)
|
|||
t->scroll.edge_state);
|
||||
break;
|
||||
case EDGE_SCROLL_TOUCH_STATE_EDGE_NEW:
|
||||
tmp = normalized;
|
||||
normalized = tp_normalize_delta(tp,
|
||||
device_delta(t->point,
|
||||
t->scroll.initial));
|
||||
if (fabs(*delta) < DEFAULT_SCROLL_THRESHOLD)
|
||||
normalized = zero;
|
||||
else
|
||||
normalized = tmp;
|
||||
break;
|
||||
case EDGE_SCROLL_TOUCH_STATE_EDGE:
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue