[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.5/kdelibs/khtml
From:       Leo Savernik <l.savernik () aon ! at>
Date:       2006-09-07 16:24:44
Message-ID: 1157646284.770894.4963.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 581817 by savernik:

Fixed overly slow panning with mouse wheel at greater distances from the origin.
Original patch by Tom Albers.

BUG 125668
CCBUG 92374
CCMAIL tomalbers@kde.nl


 M  +6 -15     khtmlview.cpp  


--- branches/KDE/3.5/kdelibs/khtml/khtmlview.cpp #581816:581817
@@ -391,8 +391,8 @@
     QWidget* cursor_icon_widget;
 
     // scrolling activated by MMB
-    int m_mouseScroll_byX : 4;
-    int m_mouseScroll_byY : 4;
+    short m_mouseScroll_byX;
+    short m_mouseScroll_byY;
     QTimer *m_mouseScrollTimer;
     QWidget *m_mouseScrollIndicator;
 };
@@ -1101,21 +1101,12 @@
         (deltaX > 0) ? d->m_mouseScroll_byX = 1 : d->m_mouseScroll_byX = -1;
         (deltaY > 0) ? d->m_mouseScroll_byY = 1 : d->m_mouseScroll_byY = -1;
 
-        int adX = abs( deltaX );
-        int adY = abs( deltaY );
+        double adX = QABS(deltaX)/30.0;
+        double adY = QABS(deltaY)/30.0;
 
-        if (adX > 100) d->m_mouseScroll_byX *= 7;
-        else if (adX > 75) d->m_mouseScroll_byX *= 4;
-        else if (adX > 50) d->m_mouseScroll_byX *= 2;
-        else if (adX > 25) d->m_mouseScroll_byX *= 1;
-        else d->m_mouseScroll_byX = 0;
+        d->m_mouseScroll_byX = kMax(kMin(d->m_mouseScroll_byX * int(adX*adX), SHRT_MAX), SHRT_MIN);
+        d->m_mouseScroll_byY = kMax(kMin(d->m_mouseScroll_byY * int(adY*adY), SHRT_MAX), SHRT_MIN);
 
-        if (adY > 100) d->m_mouseScroll_byY *= 7;
-        else if (adY > 75) d->m_mouseScroll_byY *= 4;
-        else if (adY > 50) d->m_mouseScroll_byY *= 2;
-        else if (adY > 25) d->m_mouseScroll_byY *= 1;
-        else d->m_mouseScroll_byY = 0;
-
         if (d->m_mouseScroll_byX == 0 && d->m_mouseScroll_byY == 0) {
             d->m_mouseScrollTimer->stop();
         }
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic