summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-12-31 13:35:56 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:38:17 +0100
commitacdea8854140b329c13765abb9ea322dacd95ba6 (patch)
tree63934d44ed2b4541b203546ec931994a7563c59b /src
parenta19ede5b6faaf8bf5299ae02da92e8d604e39468 (diff)
Maintain selection while filtering (again).
Diffstat (limited to 'src')
-rw-r--r--src/modlistsortproxy.cpp3
-rw-r--r--src/modlistsortproxy.h1
-rw-r--r--src/modlistview.cpp12
3 files changed, 10 insertions, 6 deletions
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 0dc2be83..455daa76 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -71,6 +71,7 @@ void ModListSortProxy::setCriteria(const std::vector<Criteria>& criteria)
m_Criteria = criteria;
updateFilterActive();
invalidateFilter();
+ emit filterInvalidated();
}
}
@@ -238,6 +239,7 @@ void ModListSortProxy::updateFilter(const QString& filter)
m_Filter = filter;
updateFilterActive();
invalidateFilter();
+ emit filterInvalidated();
}
bool ModListSortProxy::hasConflictFlag(const std::vector<ModInfo::EConflictFlag> &flags) const
@@ -557,6 +559,7 @@ void ModListSortProxy::setOptions(
m_FilterMode = mode;
m_FilterSeparators = separators;
invalidateFilter();
+ emit filterInvalidated();
}
}
diff --git a/src/modlistsortproxy.h b/src/modlistsortproxy.h
index fed05188..448ee38d 100644
--- a/src/modlistsortproxy.h
+++ b/src/modlistsortproxy.h
@@ -121,6 +121,7 @@ public slots:
signals:
void filterActive(bool active);
+ void filterInvalidated();
protected:
diff --git a/src/modlistview.cpp b/src/modlistview.cpp
index fe2517c2..7e9a0438 100644
--- a/src/modlistview.cpp
+++ b/src/modlistview.cpp
@@ -747,15 +747,10 @@ void ModListView::setup(OrganizerCore& core, CategoryFactory& factory, MainWindo
});
connect(m_core->modList(), &ModList::externalFolderDropped, this, &ModListView::onExternalFolderDropped);
- connect(m_sortProxy, &ModListSortProxy::filterActive, this, &ModListView::onModFilterActive);
- connect(m_sortProxy, &QAbstractItemModel::layoutChanged, this, [&]() {
- if (hasCollapsibleSeparators()) {
- m_byPriorityProxy->refreshExpandedItems();
- }
- });
connect(selectionModel(), &QItemSelectionModel::selectionChanged, this, &ModListView::onSelectionChanged);
// filters
+ connect(m_sortProxy, &ModListSortProxy::filterActive, this, &ModListView::onModFilterActive);
connect(m_filters.get(), &FilterList::criteriaChanged, [=](auto&& v) { onFiltersCriteria(v); });
connect(m_filters.get(), &FilterList::optionsChanged, [=](auto&& mode, auto&& sep) { setFilterOptions(mode, sep); });
connect(ui.filter, &QLineEdit::textChanged, m_sortProxy, &ModListSortProxy::updateFilter);
@@ -763,6 +758,11 @@ void ModListView::setup(OrganizerCore& core, CategoryFactory& factory, MainWindo
ui.filter->clear();
m_filters->clearSelection();
});
+ connect(m_sortProxy, &ModListSortProxy::filterInvalidated, [=]() {
+ if (hasCollapsibleSeparators()) {
+ m_byPriorityProxy->refreshExpandedItems();
+ }
+ });
}
void ModListView::restoreState(const Settings& s)