From 7b3a9dfa506d1d60e140dbf0be62ac96e1a852c3 Mon Sep 17 00:00:00 2001
From: Yoann Laissus <yoann.laissus@gmail.com>
Date: Wed, 25 Aug 2010 17:00:32 +0200
Subject: Finally fix the smooth scrolling distance per scroll

---
 src/webview.cpp | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/webview.cpp b/src/webview.cpp
index 1ffb2f1e..d911bc3a 100644
--- a/src/webview.cpp
+++ b/src/webview.cpp
@@ -540,8 +540,9 @@ void WebView::keyPressEvent(QKeyEvent *event)
 void WebView::wheelEvent(QWheelEvent *event)
 {
     // To let some websites (eg: google maps) to handle wheel events
-    int ypos = page()->currentFrame()->scrollPosition().y();
+    int prevPos = page()->currentFrame()->scrollPosition().y();
     KWebView::wheelEvent(event);
+    int newPos = page()->currentFrame()->scrollPosition().y();
 
     // Sync with the zoom slider
     if (event->modifiers() == Qt::ControlModifier)
@@ -559,23 +560,21 @@ void WebView::wheelEvent(QWheelEvent *event)
 
         emit zoomChanged(newFactor);
     }
-    else if (ReKonfig::smoothScrolling() && ypos != page()->currentFrame()->scrollPosition().y())
+    else if (ReKonfig::smoothScrolling() && prevPos != newPos)
     {
-        page()->currentFrame()->setScrollPosition(QPoint(page()->currentFrame()->scrollPosition().x(), ypos));
 
-        int numDegrees = event->delta() / 8;
-        int numSteps = numDegrees / 15;
+        page()->currentFrame()->setScrollPosition(QPoint(page()->currentFrame()->scrollPosition().x(), prevPos));
 
-        if ((numSteps > 0) != !_scrollBottom)
+        if ((event->delta() > 0) != !_scrollBottom)
             stopScrolling();
 
-        if (numSteps > 0)
+        if (event->delta() > 0)
             _scrollBottom = false;
         else
             _scrollBottom = true;
 
 
-        setupSmoothScrolling(QApplication::wheelScrollLines() * abs(numSteps) * 20);
+        setupSmoothScrolling(abs(newPos - prevPos));
     }
 }
 
-- 
cgit v1.2.1