diff options
Diffstat (limited to 'opensuse/tdelibs/smooth-scrolling.diff')
-rw-r--r-- | opensuse/tdelibs/smooth-scrolling.diff | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/opensuse/tdelibs/smooth-scrolling.diff b/opensuse/tdelibs/smooth-scrolling.diff deleted file mode 100644 index b369a6146..000000000 --- a/opensuse/tdelibs/smooth-scrolling.diff +++ /dev/null @@ -1,267 +0,0 @@ -Index: khtml/khtmlview.cpp -=================================================================== ---- khtml/khtmlview.cpp.orig -+++ khtml/khtmlview.cpp -@@ -151,6 +151,9 @@ public: - - KHTMLViewPrivate() - : underMouse( 0 ), underMouseNonShared( 0 ), visibleWidgets( 107 ) -+#ifndef NO_SMOOTH_SCROLL_HACK -+ , dx(0), dy(0), ddx(0), ddy(0), rdx(0), rdy(0), scrolling(false) -+#endif - { - #ifndef KHTML_NO_CARET - m_caretViewContext = 0; -@@ -396,6 +399,17 @@ public: - short m_mouseScroll_byY; - QTimer *m_mouseScrollTimer; - QWidget *m_mouseScrollIndicator; -+#ifndef NO_SMOOTH_SCROLL_HACK -+ QTimer timer2; -+ int dx; -+ int dy; -+ // Step size * 16 and residual to avoid huge difference between 1px/step and 2px/step -+ int ddx; -+ int ddy; -+ int rdx; -+ int rdy; -+ bool scrolling; -+#endif - }; - - #ifndef QT_NO_TOOLTIP -@@ -504,6 +518,11 @@ KHTMLView::KHTMLView( KHTMLPart *part, Q - init(); - - viewport()->show(); -+#ifndef NO_SMOOTH_SCROLL_HACK -+#define timer timer2 -+ connect(&d->timer, SIGNAL(timeout()), this, SLOT(scrollTick())); -+#undef timer -+#endif - } - - KHTMLView::~KHTMLView() -@@ -1544,7 +1563,7 @@ void KHTMLView::keyPressEvent( QKeyEvent - case Key_Down: - case Key_J: - if (!d->scrollTimerId || d->scrollSuspended) -- scrollBy( 0, 10 ); -+ scrollBy( 0, 10 * _ke->count() ); - if (d->scrollTimerId) - d->newScrollTimer(this, 0); - break; -@@ -1559,7 +1578,7 @@ void KHTMLView::keyPressEvent( QKeyEvent - case Key_Up: - case Key_K: - if (!d->scrollTimerId || d->scrollSuspended) -- scrollBy( 0, -10 ); -+ scrollBy( 0, -10 * _ke->count()); - if (d->scrollTimerId) - d->newScrollTimer(this, 0); - break; -@@ -1572,14 +1591,14 @@ void KHTMLView::keyPressEvent( QKeyEvent - case Key_Right: - case Key_L: - if (!d->scrollTimerId || d->scrollSuspended) -- scrollBy( 10, 0 ); -+ scrollBy( 10 * _ke->count(), 0 ); - if (d->scrollTimerId) - d->newScrollTimer(this, 0); - break; - case Key_Left: - case Key_H: - if (!d->scrollTimerId || d->scrollSuspended) -- scrollBy( -10, 0 ); -+ scrollBy( -10 * _ke->count(), 0 ); - if (d->scrollTimerId) - d->newScrollTimer(this, 0); - break; -@@ -1712,8 +1731,16 @@ void KHTMLView::keyReleaseEvent(QKeyEven - d->scrollSuspendPreActivate = false; - if( _ke->key() == Key_Shift && d->scrollSuspendPreActivate && _ke->state() == Qt::ShiftButton - && !(KApplication::keyboardMouseState() & Qt::ShiftButton)) -+ { - if (d->scrollTimerId) -- d->scrollSuspended = !d->scrollSuspended; -+ { -+ d->scrollSuspended = !d->scrollSuspended; -+#ifndef NO_SMOOTH_SCROLL_HACK -+ if( d->scrollSuspended ) -+ stopScrolling(); -+#endif -+ } -+ } - - if (d->accessKeysEnabled) - { -@@ -3259,7 +3286,11 @@ void KHTMLView::viewportWheelEvent(QWhee - else - { - d->scrollBarMoved = true; -+#ifndef NO_SMOOTH_SCROLL_HACK -+ scrollViewWheelEvent( e ); -+#else - QScrollView::viewportWheelEvent( e ); -+#endif - - QMouseEvent *tempEvent = new QMouseEvent( QEvent::MouseMove, QPoint(-1,-1), QPoint(-1,-1), Qt::NoButton, e->state() ); - emit viewportMouseMoveEvent ( tempEvent ); -@@ -4462,4 +4493,117 @@ void KHTMLView::moveCaretToLineEnd() - - #endif // KHTML_NO_CARET - -+#ifndef NO_SMOOTH_SCROLL_HACK -+#define timer timer2 -+ -+// All scrolls must be completed within 240ms of last keypress -+static const int SCROLL_TIME = 240; -+// Each step is 20 ms == 50 frames/second -+static const int SCROLL_TICK = 20; -+ -+void KHTMLView::scrollBy(int dx, int dy) -+{ -+ KConfigGroup cfg( KGlobal::config(), "KDE" ); -+ if( !cfg.readBoolEntry( "SmoothScrolling", true )) { -+ QScrollView::scrollBy( dx, dy ); -+ return; -+ } -+ // scrolling destination -+ int full_dx = d->dx + dx; -+ int full_dy = d->dy + dy; -+ -+ // scrolling speed -+ int ddx = 0; -+ int ddy = 0; -+ -+ int steps = SCROLL_TIME/SCROLL_TICK; -+ -+ ddx = (full_dx*16)/steps; -+ ddy = (full_dy*16)/steps; -+ -+ // don't go under 1px/step -+ if (ddx > 0 && ddx < 16) ddx = 16; -+ if (ddy > 0 && ddy < 16) ddy = 16; -+ if (ddx < 0 && ddx > -16) ddx = -16; -+ if (ddy < 0 && ddy > -16) ddy = -16; -+ -+ d->dx = full_dx; -+ d->dy = full_dy; -+ d->ddx = ddx; -+ d->ddy = ddy; -+ -+ if (!d->scrolling) { -+ scrollTick(); -+ startScrolling(); -+ } -+} -+ -+void KHTMLView::scrollTick() { -+ if (d->dx == 0 && d->dy == 0) { -+ stopScrolling(); -+ return; -+ } -+ -+ int tddx = d->ddx + d->rdx; -+ int tddy = d->ddy + d->rdy; -+ -+ int ddx = tddx / 16; -+ int ddy = tddy / 16; -+ d->rdx = tddx % 16; -+ d->rdy = tddy % 16; -+ -+ if (d->dx > 0 && ddx > d->dx) ddx = d->dx; -+ else -+ if (d->dx < 0 && ddx < d->dx) ddx = d->dx; -+ -+ if (d->dy > 0 && ddy > d->dy) ddy = d->dy; -+ else -+ if (d->dy < 0 && ddy < d->dy) ddy = d->dy; -+ -+ d->dx -= ddx; -+ d->dy -= ddy; -+ -+// QScrollView::setContentsPos( contentsX() + ddx, contentsY() + ddy); -+ kapp->syncX(); -+ QScrollView::scrollBy(ddx, ddy); -+// Unaccelerated X can get seriously overloaded by scrolling and for some reason -+// will send KeyPress events only infrequently. This should help to reduce -+// the load. -+ kapp->syncX(); -+} -+ -+void KHTMLView::startScrolling() -+{ -+ d->scrolling = true; -+ d->timer.start(SCROLL_TICK, false); -+} -+ -+void KHTMLView::stopScrolling() -+{ -+ d->timer.stop(); -+ d->dx = d->dy = 0; -+ d->scrolling = false; -+} -+ -+// Overloaded from QScrollView and QScrollBar -+void KHTMLView::scrollViewWheelEvent( QWheelEvent *e ) -+{ -+ int pageStep = verticalScrollBar()->pageStep(); -+ int lineStep = verticalScrollBar()->lineStep(); -+ int step = QMIN( QApplication::wheelScrollLines()*lineStep, pageStep ); -+ if ( ( e->state() & ControlButton ) || ( e->state() & ShiftButton ) ) -+ step = pageStep; -+ -+ if(e->orientation() == Horizontal) -+ scrollBy(-((e->delta()*step)/120), 0); -+ else if(e->orientation() == Vertical) -+ scrollBy(0,-((e->delta()*step)/120)); -+ -+ e->accept(); -+} -+ -+#undef timer -+ -+#endif // NO_SMOOTH_SCROLL_HACK -+ - #undef DEBUG_CARETMODE -Index: khtml/khtmlview.h -=================================================================== ---- khtml/khtmlview.h.orig -+++ khtml/khtmlview.h -@@ -181,6 +181,11 @@ signals: - void hideAccessKeys(); - void repaintAccessKeys(); - void findAheadActive( bool ); -+//#define NO_SMOOTH_SCROLL_HACK -+#ifndef NO_SMOOTH_SCROLL_HACK -+public slots: -+ void scrollBy(int dx, int dy); -+#endif - - protected: - void clear(); -@@ -211,9 +216,23 @@ protected: - void contentsContextMenuEvent ( QContextMenuEvent *_ce ); - void doAutoScroll(); - void timerEvent ( QTimerEvent * ); -+ -+#ifndef NO_SMOOTH_SCROLL_HACK -+ void startScrolling(); -+ void stopScrolling(); -+#ifndef QT_NO_WHEELEVENT -+ void scrollViewWheelEvent( QWheelEvent* e ); -+#endif -+#endif -+ - protected slots: - void slotPaletteChanged(); - void slotScrollBarMoved(); -+#ifndef NO_SMOOTH_SCROLL_HACK -+ void scrollTick(); -+#else -+ void scrollTick() {}; // moc cannot handle #if -+#endif - - private slots: - void tripleClickTimeout(); |