From 9438a31bac23bff2672ad86b2847737a7c6d49a9 Mon Sep 17 00:00:00 2001 From: Chun Yang Date: Tue, 15 May 2012 14:51:42 -0500 Subject: [PATCH synaptics] Fix coasting for negative ScrollDelta Fix the coasting direction for when VertScrollDelta or HorizScrollDelta is negative. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=49966 Signed-off-by: Chun Yang --- src/synaptics.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/synaptics.c b/src/synaptics.c index e792977..7eaddf4 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -2393,7 +2393,7 @@ HandleScrolling(SynapticsPrivate * priv, struct SynapticsHwState *hw, double dtime = (hw->millis - priv->scroll.last_millis) / 1000.0; double ddy = para->coasting_friction * dtime; - priv->scroll.delta_y += priv->scroll.coast_speed_y * dtime * para->scroll_dist_vert; + priv->scroll.delta_y += priv->scroll.coast_speed_y * dtime * abs(para->scroll_dist_vert); delay = MIN(delay, POLL_MS); if (abs(priv->scroll.coast_speed_y) < ddy) { priv->scroll.coast_speed_y = 0; @@ -2408,7 +2408,7 @@ HandleScrolling(SynapticsPrivate * priv, struct SynapticsHwState *hw, if (priv->scroll.coast_speed_x) { double dtime = (hw->millis - priv->scroll.last_millis) / 1000.0; double ddx = para->coasting_friction * dtime; - priv->scroll.delta_x += priv->scroll.coast_speed_x * dtime * para->scroll_dist_vert; + priv->scroll.delta_x += priv->scroll.coast_speed_x * dtime * abs(para->scroll_dist_horiz); delay = MIN(delay, POLL_MS); if (abs(priv->scroll.coast_speed_x) < ddx) { priv->scroll.coast_speed_x = 0; -- 1.7.10.2