diff --git a/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.cpp b/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.cpp index 5b95811c27c..e57131e9b98 100644 --- a/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.cpp +++ b/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.cpp @@ -70,14 +70,12 @@ QStringList DesignSystemInterface::collections() const CollectionModel *DesignSystemInterface::createModel(const QString &typeName, DSThemeManager *collection) { - auto [iterator, inserted] = m_models.try_emplace(typeName, - makeLazyUniquePtr(collection, - m_store)); + auto [iterator, inserted] = m_models.try_emplace(typeName, collection, m_store); if (inserted) { // Otherwise the model will be deleted by the QML engine. - QQmlEngine::setObjectOwnership(iterator->second.get(), QQmlEngine::CppOwnership); + QQmlEngine::setObjectOwnership(&iterator->second, QQmlEngine::CppOwnership); } - return iterator->second.get(); + return &iterator->second; } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.h b/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.h index fd732fb88b6..bbf21bd0b53 100644 --- a/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.h +++ b/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.h @@ -42,7 +42,7 @@ private: private: class DSStore *m_store = nullptr; - std::map> m_models; + std::map m_models; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/libs/designsystem/dsstore.cpp b/src/plugins/qmldesigner/libs/designsystem/dsstore.cpp index f71ec4f4b14..9fdec307a74 100644 --- a/src/plugins/qmldesigner/libs/designsystem/dsstore.cpp +++ b/src/plugins/qmldesigner/libs/designsystem/dsstore.cpp @@ -190,7 +190,7 @@ DSThemeManager *DSStore::addCollection(const QString &qmlTypeName) { const QString componentType = uniqueCollectionName(qmlTypeName); - auto [itr, success] = m_collections.try_emplace(componentType, DSThemeManager{}); + auto [itr, success] = m_collections.try_emplace(componentType); if (success) return &itr->second; diff --git a/src/plugins/qmldesigner/libs/designsystem/dsthememanager.cpp b/src/plugins/qmldesigner/libs/designsystem/dsthememanager.cpp index 498c4796ec5..1b8a2277153 100644 --- a/src/plugins/qmldesigner/libs/designsystem/dsthememanager.cpp +++ b/src/plugins/qmldesigner/libs/designsystem/dsthememanager.cpp @@ -116,7 +116,7 @@ void DSThemeManager::forAllGroups(std::function return; for (auto &[gt, themeGroup] : m_groups) - callback(gt, themeGroup.get()); + callback(gt, &themeGroup); } size_t DSThemeManager::themeCount() const @@ -126,9 +126,8 @@ size_t DSThemeManager::themeCount() const size_t DSThemeManager::propertyCount() const { - using groupPair = std::pair>; - return std::accumulate(m_groups.cbegin(), m_groups.cend(), 0ull, [](size_t c, const groupPair &g) { - return c + g.second->count(); + return std::accumulate(m_groups.cbegin(), m_groups.cend(), 0ull, [](size_t c, const auto &g) { + return c + g.second.count(); }); } @@ -138,7 +137,7 @@ void DSThemeManager::removeTheme(ThemeId id) return; for (auto &[gt, group] : m_groups) - group->removeTheme(id); + group.removeTheme(id); if (m_themes.erase(id)) reviewActiveTheme(); @@ -147,13 +146,13 @@ void DSThemeManager::removeTheme(ThemeId id) void DSThemeManager::duplicateTheme(ThemeId from, ThemeId to) { for (auto &[gt, group] : m_groups) - group->duplicateValues(from, to); + group.duplicateValues(from, to); } std::optional DSThemeManager::groupType(const PropertyName &name) const { for (const auto &[gt, group] : m_groups) { - if (group->hasProperty(name)) + if (group.hasProperty(name)) return gt; } return {}; @@ -166,7 +165,7 @@ std::optional DSThemeManager::property(ThemeId themeId, if (m_themes.contains(themeId)) { auto groupItr = m_groups.find(gType); if (groupItr != m_groups.end()) - return groupItr->second->propertyValue(themeId, name); + return groupItr->second.propertyValue(themeId, name); } qCDebug(dsLog) << "Error fetching property: {" << themeId << GroupId(gType) << name << "}"; @@ -248,7 +247,7 @@ void DSThemeManager::decorate(ModelNode rootNode, const QByteArray &nodeType, bo // Add property groups for (auto &[gt, group] : m_groups) - group->decorate(themeId, themeNode, !isMCU); + group.decorate(themeId, themeNode, !isMCU); } } @@ -258,21 +257,21 @@ void DSThemeManager::decorateThemeInterface(ModelNode rootNode) const return; for (auto &[gt, group] : m_groups) - group->decorateComponent(rootNode); + group.decorateComponent(rootNode); } DSThemeGroup *DSThemeManager::propertyGroup(GroupType type) { - auto itr = m_groups.try_emplace(type, makeLazySharedPtr(type)).first; + auto itr = m_groups.try_emplace(type, type).first; - return itr->second.get(); + return &itr->second; } void DSThemeManager::addGroupAliases(ModelNode rootNode) const { std::set groupNames; for (auto &[groupType, group] : m_groups) { - if (group->count()) + if (group.count()) groupNames.emplace(GroupId(groupType)); } @@ -396,7 +395,7 @@ PropertyName DSThemeManager::uniquePropertyName(const PropertyName &hint) const { auto isPropertyNameUsed = [this](const PropertyName &name) -> bool { return std::any_of(m_groups.begin(), m_groups.end(), [&name](const auto &p) { - return p.second->hasProperty(name); + return p.second.hasProperty(name); }); }; diff --git a/src/plugins/qmldesigner/libs/designsystem/dsthememanager.h b/src/plugins/qmldesigner/libs/designsystem/dsthememanager.h index 27556292a6d..7dbde3ab345 100644 --- a/src/plugins/qmldesigner/libs/designsystem/dsthememanager.h +++ b/src/plugins/qmldesigner/libs/designsystem/dsthememanager.h @@ -79,7 +79,7 @@ private: private: std::map m_themes; - std::map> m_groups; + mutable std::map m_groups; ThemeId m_activeTheme = static_cast(0); };