]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/private/kitemlistsmoothscroller.cpp
Exclude m_terminalPanel references when built on Windows
[dolphin.git] / src / kitemviews / private / kitemlistsmoothscroller.cpp
index e70f478904dbb81619e67ac07287be48ca9f95bf..17eac3b39ac63abf33e79bfe1f151f0850a95438 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "kitemlistsmoothscroller.h"
 
+#include <QApplication>
 #include <QEvent>
 #include <QPropertyAnimation>
 #include <QScrollBar>
@@ -31,7 +32,7 @@ KItemListSmoothScroller::KItemListSmoothScroller(QScrollBar* scrollBar,
     m_scrollBarPressed(false),
     m_smoothScrolling(true),
     m_scrollBar(scrollBar),
-    m_animation(0)
+    m_animation(nullptr)
 {
     m_animation = new QPropertyAnimation(this);
     const int duration = m_scrollBar->style()->styleHint(QStyle::SH_Widget_Animate, nullptr, m_scrollBar) ? 100 : 1;
@@ -171,8 +172,7 @@ bool KItemListSmoothScroller::eventFilter(QObject* obj, QEvent* event)
         break;
 
     case QEvent::Wheel:
-        handleWheelEvent(static_cast<QWheelEvent*>(event));
-        break;
+        return false; // we're the ones sending them
 
     default:
         break;
@@ -192,18 +192,14 @@ void KItemListSmoothScroller::slotAnimationStateChanged(QAbstractAnimation::Stat
 
 void KItemListSmoothScroller::handleWheelEvent(QWheelEvent* event)
 {
-    const int numDegrees = event->delta() / 8;
-    const int numSteps = numDegrees / 15;
-
     const bool previous = m_smoothScrolling;
 
     m_smoothScrolling = true;
-    const int value = m_scrollBar->value();
-    const int pageStep = m_scrollBar->pageStep();
-    m_scrollBar->setValue(value - numSteps * pageStep);
 
-    m_smoothScrolling = previous;
+    QWheelEvent copy = *event;
+    QApplication::sendEvent(m_scrollBar, &copy);
+    event->setAccepted(copy.isAccepted());
 
-    event->accept();
+    m_smoothScrolling = previous;
 }