diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-12-31 13:35:56 +0100 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-01-02 15:38:17 +0100 |
| commit | acdea8854140b329c13765abb9ea322dacd95ba6 (patch) | |
| tree | 63934d44ed2b4541b203546ec931994a7563c59b /src | |
| parent | a19ede5b6faaf8bf5299ae02da92e8d604e39468 (diff) | |
Maintain selection while filtering (again).
Diffstat (limited to 'src')
| -rw-r--r-- | src/modlistsortproxy.cpp | 3 | ||||
| -rw-r--r-- | src/modlistsortproxy.h | 1 | ||||
| -rw-r--r-- | src/modlistview.cpp | 12 |
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)
|
