From 1fe148805dbe524645b352621bd42493d10988ff Mon Sep 17 00:00:00 2001 From: Ashish Bansal Date: Wed, 6 May 2015 15:47:18 +0530 Subject: [PATCH] Scroll by page if Shift Key is pressed If shift key is pressed along with scroll, scroll up/down by whole page. REVIEW: 123596 --- src/kitemviews/kitemlistcontainer.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index f5c785a3e..c9d521ce7 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -186,11 +186,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); + 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() / 4); + } } event->accept();