m_selectionManager(0),
m_font(),
m_decorationSize(),
- m_band()
+ m_band(),
+ m_ignoreScrollTo(false)
{
const DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
Q_ASSERT(settings != 0);
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!
}
}
+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();
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:
/**
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;