summaryrefslogtreecommitdiff
path: root/src/synaptics.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2012-03-01 16:27:01 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2012-03-05 12:11:15 +1000
commitcddab79c408db3b13905a2be72aff4f7bf1406f8 (patch)
treeb892b4270f133e4db181f427faa3e1d0767e1485 /src/synaptics.c
parent0a2fd560aa965ceac64c8fb047ca90006408a6f4 (diff)
Fix scoll increment for non-smooth scrolling (#46617)
Introduced in 2603ad69b997c999404ecc441e0d64ea2cc22018. Previously, the delta was incremented by (actual delta/scroll dist), button clicks where then sent while (delta-- >= 1). After 2603ad69b997c999404ecc441e0d64ea2cc22018, the delta was incremented by the delta only, scroll dist was used as increment in the smooth scrolling information. On non-smooth-scrolling servers, the driver would now send too many events. Restore the old behaviour by dividing by the scroll distance before entering the button click loop. X.Org Bug 46617 <http://bugs.freedesktop.org/show_bug.cgi?id=46617> Tested-by: Peter Zotov <whitequark@whitequark.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'src/synaptics.c')
-rw-r--r--src/synaptics.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/synaptics.c b/src/synaptics.c
index 4784157..df95b12 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -2512,6 +2512,12 @@ post_scroll_events(const InputInfoPtr pInfo)
if (valuator_mask_num_valuators(priv->scroll_events_mask))
xf86PostMotionEventM(pInfo->dev, FALSE, priv->scroll_events_mask);
#else
+ SynapticsParameters *para = &priv->synpara;
+
+ /* smooth scrolling uses the dist as increment */
+ priv->scroll.delta_y /= para->scroll_dist_vert;
+ priv->scroll.delta_x /= para->scroll_dist_horiz;
+
while (priv->scroll.delta_y <= -1.0)
{
post_button_click(pInfo, 4);