X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/01e4f60a0931aba506b184d384a4e2f926b2233c..c2c075011c0924fb6af3ae345f839620ea78afc2:/src/kitemviews/kitemlistcontainer.cpp diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 5e45a1766..69a0a5f27 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -31,12 +31,10 @@ #include #include #include -#include #include #include #include -#include /** * Replaces the default viewport of KItemListContainer by a @@ -45,6 +43,8 @@ */ class KItemListContainerViewport : public QGraphicsView { + Q_OBJECT + public: KItemListContainerViewport(QGraphicsScene* scene, QWidget* parent); protected: @@ -188,11 +188,21 @@ void KItemListContainer::wheelEvent(QWheelEvent* event) const QScrollBar* scrollBar = smoothScroller->scrollBar(); if (!event->pixelDelta().isNull()) { const int numPixels = event->pixelDelta().y(); - smoothScroller->scrollTo(scrollBar->value() - numPixels); + if (event->modifiers().testFlag(Qt::ShiftModifier)) { + const int scrollingDirection = numPixels > 0 ? 1 : -1; + smoothScroller->scrollTo(scrollBar->value() - scrollBar->pageStep() * scrollingDirection); + } else { + smoothScroller->scrollTo(scrollBar->value() - numPixels); + } } else { const int numDegrees = event->angleDelta().y() / 8; - const int numSteps = numDegrees / 15; - smoothScroller->scrollTo(scrollBar->value() - numSteps * scrollBar->pageStep() / 4); + const int numSteps = qApp->wheelScrollLines() * numDegrees / 15; + if (event->modifiers().testFlag(Qt::ShiftModifier)) { + const int scrollingDirection = numSteps > 0 ? 1 : -1; + smoothScroller->scrollTo(scrollBar->value() - scrollBar->pageStep() * scrollingDirection); + } else { + smoothScroller->scrollTo(scrollBar->value() - numSteps * scrollBar->pageStep() / 12); + } } event->accept(); @@ -417,3 +427,4 @@ void KItemListContainer::updateScrollOffsetScrollBarPolicy() } } +#include "kitemlistcontainer.moc"