X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fb9ca1399dc97aebf0d4776e87e701ea0ab56ba1..58c5eae1953bbdcf6d4150b21cb7ffdad07a5257:/src/kitemviews/private/kitemlistsmoothscroller.cpp diff --git a/src/kitemviews/private/kitemlistsmoothscroller.cpp b/src/kitemviews/private/kitemlistsmoothscroller.cpp index 2bd467aa5..cb1dd61ff 100644 --- a/src/kitemviews/private/kitemlistsmoothscroller.cpp +++ b/src/kitemviews/private/kitemlistsmoothscroller.cpp @@ -19,6 +19,7 @@ #include "kitemlistsmoothscroller.h" +#include #include #include #include @@ -34,8 +35,9 @@ KItemListSmoothScroller::KItemListSmoothScroller(QScrollBar* scrollBar, m_animation(0) { m_animation = new QPropertyAnimation(this); - const int duration = m_scrollBar->style()->styleHint(QStyle::SH_Widget_Animate, nullptr, m_scrollBar) ? 100 : 1; + const int duration = m_scrollBar->style()->styleHint(QStyle::SH_Widget_Animate, nullptr, m_scrollBar) ? 300 : 1; m_animation->setDuration(duration); + m_animation->setEasingCurve(QEasingCurve::InOutQuart); connect(m_animation, &QPropertyAnimation::stateChanged, this, &KItemListSmoothScroller::slotAnimationStateChanged); @@ -171,8 +173,7 @@ bool KItemListSmoothScroller::eventFilter(QObject* obj, QEvent* event) break; case QEvent::Wheel: - handleWheelEvent(static_cast(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; @@ -195,25 +196,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 = numDegrees / 15; - numPixels = numSteps * m_scrollBar->pageStep() / 4; - } - 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, ©); + event->setAccepted(copy.isAccepted()); - event->accept(); + m_smoothScrolling = previous; }