X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c3ad6c74064c842c2514a3a9bbc5574e631fd6dc..16e3d669de256aab86f957cd5b3bee91bd2fbbff:/src/kitemviews/kitemlistcontainer.cpp diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 8498286c9..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: @@ -89,10 +89,10 @@ KItemListContainer::KItemListContainer(KItemListController* controller, QWidget* slotViewChanged(controller->view(), 0); } - connect(controller, SIGNAL(modelChanged(KItemModelBase*,KItemModelBase*)), - this, SLOT(slotModelChanged(KItemModelBase*,KItemModelBase*))); - connect(controller, SIGNAL(viewChanged(KItemListView*,KItemListView*)), - this, SLOT(slotViewChanged(KItemListView*,KItemListView*))); + connect(controller, &KItemListController::modelChanged, + this, &KItemListContainer::slotModelChanged); + connect(controller, &KItemListController::viewChanged, + this, &KItemListContainer::slotViewChanged); } KItemListContainer::~KItemListContainer() @@ -185,11 +185,25 @@ void KItemListContainer::wheelEvent(QWheelEvent* event) KItemListSmoothScroller* smoothScroller = scrollHorizontally ? m_horizontalSmoothScroller : m_verticalSmoothScroller; - const int numDegrees = event->delta() / 8; - const int numSteps = numDegrees / 15; - const QScrollBar* scrollBar = smoothScroller->scrollBar(); - smoothScroller->scrollTo(scrollBar->value() - numSteps * scrollBar->pageStep() / 4); + if (!event->pixelDelta().isNull()) { + const int numPixels = event->pixelDelta().y(); + 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 = 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(); } @@ -211,23 +225,33 @@ void KItemListContainer::slotViewChanged(KItemListView* current, KItemListView* QGraphicsScene* scene = static_cast(viewport())->scene(); if (previous) { scene->removeItem(previous); - disconnect(previous, SIGNAL(scrollOrientationChanged(Qt::Orientation,Qt::Orientation)), this, SLOT(slotScrollOrientationChanged(Qt::Orientation,Qt::Orientation))); - disconnect(previous, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(updateScrollOffsetScrollBar())); - disconnect(previous, SIGNAL(maximumScrollOffsetChanged(qreal,qreal)), this, SLOT(updateScrollOffsetScrollBar())); - disconnect(previous, SIGNAL(itemOffsetChanged(qreal,qreal)), this, SLOT(updateItemOffsetScrollBar())); - disconnect(previous, SIGNAL(maximumItemOffsetChanged(qreal,qreal)), this, SLOT(updateItemOffsetScrollBar())); - disconnect(previous, SIGNAL(scrollTo(qreal)), this, SLOT(scrollTo(qreal))); + disconnect(previous, &KItemListView::scrollOrientationChanged, + this, &KItemListContainer::slotScrollOrientationChanged); + disconnect(previous, &KItemListView::scrollOffsetChanged, + this, &KItemListContainer::updateScrollOffsetScrollBar); + disconnect(previous, &KItemListView::maximumScrollOffsetChanged, + this, &KItemListContainer::updateScrollOffsetScrollBar); + disconnect(previous, &KItemListView::itemOffsetChanged, + this, &KItemListContainer::updateItemOffsetScrollBar); + disconnect(previous, &KItemListView::maximumItemOffsetChanged, + this, &KItemListContainer::updateItemOffsetScrollBar); + disconnect(previous, &KItemListView::scrollTo, this, &KItemListContainer::scrollTo); m_horizontalSmoothScroller->setTargetObject(0); m_verticalSmoothScroller->setTargetObject(0); } if (current) { scene->addItem(current); - connect(current, SIGNAL(scrollOrientationChanged(Qt::Orientation,Qt::Orientation)), this, SLOT(slotScrollOrientationChanged(Qt::Orientation,Qt::Orientation))); - connect(current, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(updateScrollOffsetScrollBar())); - connect(current, SIGNAL(maximumScrollOffsetChanged(qreal,qreal)), this, SLOT(updateScrollOffsetScrollBar())); - connect(current, SIGNAL(itemOffsetChanged(qreal,qreal)), this, SLOT(updateItemOffsetScrollBar())); - connect(current, SIGNAL(maximumItemOffsetChanged(qreal,qreal)), this, SLOT(updateItemOffsetScrollBar())); - connect(current, SIGNAL(scrollTo(qreal)), this, SLOT(scrollTo(qreal))); + connect(current, &KItemListView::scrollOrientationChanged, + this, &KItemListContainer::slotScrollOrientationChanged); + connect(current, &KItemListView::scrollOffsetChanged, + this, &KItemListContainer::updateScrollOffsetScrollBar); + connect(current, &KItemListView::maximumScrollOffsetChanged, + this, &KItemListContainer::updateScrollOffsetScrollBar); + connect(current, &KItemListView::itemOffsetChanged, + this, &KItemListContainer::updateItemOffsetScrollBar); + connect(current, &KItemListView::maximumItemOffsetChanged, + this, &KItemListContainer::updateItemOffsetScrollBar); + connect(current, &KItemListView::scrollTo, this, &KItemListContainer::scrollTo); m_horizontalSmoothScroller->setTargetObject(current); m_verticalSmoothScroller->setTargetObject(current); updateSmoothScrollers(current->scrollOrientation());