From d02304e5c8a2dd2e35e669687dd6712e18f69405 Mon Sep 17 00:00:00 2001 From: Craig Drummond Date: Mon, 8 Jun 2015 21:08:40 +0100 Subject: [PATCH] If using list/grid view and model is reset, then navigate to top --- widgets/itemview.cpp | 13 +++++++++++++ widgets/itemview.h | 1 + 2 files changed, 14 insertions(+) diff --git a/widgets/itemview.cpp b/widgets/itemview.cpp index 7ff424955..04631508f 100644 --- a/widgets/itemview.cpp +++ b/widgets/itemview.cpp @@ -934,11 +934,17 @@ QAbstractItemView * ItemView::view() const void ItemView::setModel(QAbstractItemModel *m) { bool needtToInit=!itemModel; + if (itemModel) { + disconnect(itemModel, SIGNAL(modelReset()), this, SLOT(modelReset())); + } itemModel=m; if (needtToInit) { mode=Mode_List; setMode(Mode_SimpleTree); } + if (m) { + connect(m, SIGNAL(modelReset()), this, SLOT(modelReset())); + } view()->setModel(m); } @@ -1386,6 +1392,13 @@ void ItemView::activateItem(const QModelIndex &index, bool emitRootSet) } } +void ItemView::modelReset() +{ + if (Mode_List==mode || Mode_IconTop==mode) { + goToTop(); + } +} + void ItemView::delaySearchItems() { if (searchWidget->text().isEmpty()) { diff --git a/widgets/itemview.h b/widgets/itemview.h index 652138375..e3d189913 100644 --- a/widgets/itemview.h +++ b/widgets/itemview.h @@ -174,6 +174,7 @@ private Q_SLOTS: void doSearch(); void searchActive(bool a); void activateItem(const QModelIndex &index, bool emitRootSet=true); + void modelReset(); private: void collapseToLevel();