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.hutte...@who-t.net>
---
 src/evdev-mt-touchpad-edge-scroll.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/evdev-mt-touchpad-edge-scroll.c 
b/src/evdev-mt-touchpad-edge-scroll.c
index 56f1e8a..992a169 100644
--- a/src/evdev-mt-touchpad-edge-scroll.c
+++ b/src/evdev-mt-touchpad-edge-scroll.c
@@ -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;
-- 
2.4.3

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

Reply via email to