From 382ac5f01d1f12da5980ae6873aa21d9b4be6d9b Mon Sep 17 00:00:00 2001 From: Simon Paul St James Date: Sun, 26 Oct 2008 17:25:14 +0000 Subject: [PATCH] When restoring the index, we don't necessarily want to scroll to it. BUG:165551 svn path=/trunk/KDE/kdebase/apps/; revision=876177 --- src/dolphindetailsview.cpp | 16 +++++++++++++--- src/dolphindetailsview.h | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 6563cb658..3ccca4622 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -55,7 +55,8 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr m_selectionManager(0), m_font(), m_decorationSize(), - m_band() + m_band(), + m_ignoreScrollTo(false) { const DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); Q_ASSERT(settings != 0); @@ -228,9 +229,11 @@ void DolphinDetailsView::mousePressEvent(QMouseEvent* event) clearSelection(); } - // restore the current index, other columns are handled as viewport area + // restore the current index, other columns are handled as viewport area. + // setCurrentIndex(...) implicitly calls scrollTo(...), which we want to ignore. + m_ignoreScrollTo = true; selectionModel()->setCurrentIndex(current, QItemSelectionModel::Current); - + m_ignoreScrollTo = false; if ((event->button() == Qt::LeftButton) && !m_expandingTogglePressed) { // Inform Qt about what we are doing - otherwise it starts dragging items around! @@ -466,6 +469,13 @@ void DolphinDetailsView::setSelection(const QRect &rect, QItemSelectionModel::Se } } +void DolphinDetailsView::scrollTo(const QModelIndex & index, ScrollHint hint) +{ + if (m_ignoreScrollTo) + return; + QTreeView::scrollTo(index, hint); +} + void DolphinDetailsView::setSortIndicatorSection(DolphinView::Sorting sorting) { QHeaderView* headerView = header(); diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index 7b08e25a1..e974635e5 100644 --- a/src/dolphindetailsview.h +++ b/src/dolphindetailsview.h @@ -65,6 +65,7 @@ protected: virtual bool eventFilter(QObject* watched, QEvent* event); virtual QModelIndex indexAt (const QPoint& point) const; virtual void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command); + virtual void scrollTo (const QModelIndex & index, ScrollHint hint = EnsureVisible); private slots: /** @@ -176,6 +177,7 @@ private: bool m_expandingTogglePressed : 1; bool m_keyPressed : 1; // true if a key is pressed currently; info used by currentChanged() bool m_useDefaultIndexAt : 1; // true, if QTreeView::indexAt() should be used + bool m_ignoreScrollTo : 1; // true if calls to scrollTo(...) should do nothing. DolphinController* m_controller; SelectionManager* m_selectionManager; -- 2.47.3