]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/private/kitemlistsmoothscroller.cpp
Remove unused #include
[dolphin.git] / src / kitemviews / private / kitemlistsmoothscroller.cpp
index c89d3cf8f8d64d9e9f33d805b1b28764bd8ae573..f1f6145c452a9d5566d9bbd62e0a1cbfd33c55b3 100644 (file)
@@ -20,7 +20,6 @@
 #include "kitemlistsmoothscroller.h"
 
 #include <QApplication>
-#include <QEvent>
 #include <QPropertyAnimation>
 #include <QScrollBar>
 #include <QWheelEvent>
@@ -32,11 +31,17 @@ 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;
-    m_animation->setDuration(duration);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
+    const int animationDuration = m_scrollBar->style()->styleHint(QStyle::SH_Widget_Animation_Duration, nullptr, m_scrollBar);
+    const bool animationEnabled = (animationDuration > 0);
+ #else
+    const int animationDuration = 100;
+    const bool animationEnabled = m_scrollBar->style()->styleHint(QStyle::SH_Widget_Animate, nullptr, m_scrollBar);
+#endif
+    m_animation->setDuration(animationEnabled ? animationDuration : 1);
     connect(m_animation, &QPropertyAnimation::stateChanged,
             this, &KItemListSmoothScroller::slotAnimationStateChanged);
 
@@ -172,8 +177,7 @@ bool KItemListSmoothScroller::eventFilter(QObject* obj, QEvent* event)
         break;
 
     case QEvent::Wheel:
-        handleWheelEvent(static_cast<QWheelEvent*>(event));
-        return true; // eat event so that QScrollBar does not scroll one step more by itself
+        return false; // we're the ones sending them
 
     default:
         break;
@@ -196,25 +200,11 @@ void KItemListSmoothScroller::handleWheelEvent(QWheelEvent* event)
     const bool previous = m_smoothScrolling;
 
     m_smoothScrolling = true;
-    int numPixels;
-    if (!event->pixelDelta().isNull()) {
-        numPixels = event->pixelDelta().y();
-    } else {
-        const int numDegrees = event->angleDelta().y() / 8;
-        const int numSteps = qApp->wheelScrollLines() * numDegrees / 15;
-        numPixels = numSteps * m_scrollBar->pageStep() / 12;
-    }
-    int value = m_scrollBar->value();
-    if (event->modifiers().testFlag(Qt::ShiftModifier)) {
-        const int scrollingDirection = numPixels > 0 ? 1 : -1;
-        value -= m_scrollBar->pageStep() * scrollingDirection;
-    } else {
-        value -= numPixels;
-    }
-    m_scrollBar->setValue(value);
 
-    m_smoothScrolling = previous;
+    QWheelEvent copy = *event;
+    QApplication::sendEvent(m_scrollBar, &copy);
+    event->setAccepted(copy.isAccepted());
 
-    event->accept();
+    m_smoothScrolling = previous;
 }