From 7b3a9dfa506d1d60e140dbf0be62ac96e1a852c3 Mon Sep 17 00:00:00 2001 From: Yoann Laissus 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