X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/63e82a2b3bba25fbfaa3d283264cc0c61d11cfe8..dbe2152912cc58f1d2bfba187175ec0e4b3e4761:/src/kitemviews/kitemlistcontainer.cpp diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index b8d05dc34..b01751e46 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -210,18 +210,32 @@ void KItemListContainer::slotViewChanged(KItemListView* current, KItemListView* QGraphicsScene* scene = static_cast(viewport())->scene(); if (previous) { scene->removeItem(previous); - disconnect(previous, SIGNAL(offsetChanged(int,int)), this, SLOT(updateScrollBars())); - disconnect(previous, SIGNAL(maximumOffsetChanged(int,int)), this, SLOT(updateScrollBars())); + disconnect(previous, SIGNAL(offsetChanged(qreal,qreal)), this, SLOT(updateScrollBars())); + disconnect(previous, SIGNAL(maximumOffsetChanged(qreal,qreal)), this, SLOT(updateScrollBars())); + disconnect(previous, SIGNAL(scrollTo(qreal)), this, SLOT(scrollTo(qreal))); m_viewOffsetAnimation->setTargetObject(0); } if (current) { scene->addItem(current); - connect(current, SIGNAL(offsetChanged(int,int)), this, SLOT(updateScrollBars())); - connect(current, SIGNAL(maximumOffsetChanged(int,int)), this, SLOT(updateScrollBars())); + connect(current, SIGNAL(offsetChanged(qreal,qreal)), this, SLOT(updateScrollBars())); + connect(current, SIGNAL(maximumOffsetChanged(qreal,qreal)), this, SLOT(updateScrollBars())); + connect(current, SIGNAL(scrollTo(qreal)), this, SLOT(scrollTo(qreal))); m_viewOffsetAnimation->setTargetObject(current); } } +void KItemListContainer::scrollTo(qreal offset) +{ + const KItemListView* view = m_controller->view(); + if (!view) { + return; + } + + QScrollBar* scrollBar = (view->scrollOrientation() == Qt::Vertical) + ? verticalScrollBar() : horizontalScrollBar(); + scrollBar->setValue(offset); +} + void KItemListContainer::updateScrollBars() { const KItemListView* view = m_controller->view(); @@ -267,11 +281,6 @@ void KItemListContainer::updateScrollBars() scrollBar->setMaximum(maximum); scrollBar->setValue(value); - disconnect(view, SIGNAL(scrollTo(int)), - otherScrollBar, SLOT(setValue(int))); - connect(view, SIGNAL(scrollTo(int)), - scrollBar, SLOT(setValue(int))); - // Make sure that the other scroll bar is hidden otherScrollBar->setMaximum(0); otherScrollBar->setValue(0); @@ -316,7 +325,7 @@ void KItemListContainer::initialize() setViewport(graphicsView); m_viewOffsetAnimation = new QPropertyAnimation(this, "offset"); - m_viewOffsetAnimation->setDuration(500); + m_viewOffsetAnimation->setDuration(300); horizontalScrollBar()->installEventFilter(this); verticalScrollBar()->installEventFilter(this);