File tree Expand file tree Collapse file tree
src/framework/uicomponents/qml/Muse/UiComponents Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2424
2525#include < QTimer>
2626
27+ #include " global/log.h"
2728#include " uicomponents/view/modelutils.h"
2829
2930using namespace muse ::uicomponents;
@@ -145,7 +146,7 @@ void SortFilterProxyModel::setAlwaysExcludeIndices(const QList<int>& indices)
145146
146147int SortFilterProxyModel::roleFromRoleName (const QString& roleName) const
147148{
148- return roleNames (). key (roleName.toUtf8 (), INVALID_KEY);
149+ return m_roles. value (roleName.toUtf8 (), INVALID_KEY);
149150}
150151
151152QHash<int , QByteArray> SortFilterProxyModel::roleNames () const
@@ -165,6 +166,12 @@ void SortFilterProxyModel::setSourceModel(QAbstractItemModel* sourceModel)
165166
166167 QSortFilterProxyModel::setSourceModel (sourceModel);
167168
169+ m_roles.clear ();
170+ for (const auto & [role, roleName] : roleNames ().asKeyValueRange ()) {
171+ const auto [it, didInsert] = m_roles.try_emplace (roleName, role);
172+ DO_ASSERT (didInsert);
173+ }
174+
168175 emit sourceModelRoleNamesChanged ();
169176
170177 if (auto sourceSortFilterModel = qobject_cast<SortFilterProxyModel*>(sourceModel)) {
Original file line number Diff line number Diff line change 2222
2323#pragma once
2424
25+ #include < QByteArray>
2526#include < QHash>
2627#include < QList>
2728#include < QMetaObject>
@@ -77,6 +78,8 @@ class SortFilterProxyModel : public QSortFilterProxyModel
7778private:
7879 Sorter* currentSorter () const ;
7980
81+ QHash<QByteArray, int > m_roles;
82+
8083 QmlListProperty<Filter> m_filters;
8184 QmlListProperty<Sorter> m_sorters;
8285
You can’t perform that action at this time.
0 commit comments