From 665d043e7244028ef766c3baf889179a793b2619 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 3 Apr 2024 12:48:37 +0200 Subject: [PATCH] QmlDesigner: Extract default property in qmltypes parser Change-Id: I0cc9ac71ba764db252e302d11d1cd3e4aff834f5 Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Thomas Hartmann --- .../designercore/metainfo/nodemetainfo.cpp | 2 +- .../designercore/projectstorage/qmltypesparser.cpp | 4 +++- .../projectstorage/qmltypesparser-test.cpp | 13 +++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index adea8baf255..0d82a975c22 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -2092,7 +2092,7 @@ const Storage::Info::Type &NodeMetaInfo::typeData() const PropertyDeclarationId NodeMetaInfo::defaultPropertyDeclarationId() const { if (!m_defaultPropertyId) - m_defaultPropertyId = m_projectStorage->defaultPropertyDeclarationId(m_typeId); + m_defaultPropertyId.emplace(m_projectStorage->defaultPropertyDeclarationId(m_typeId)); return *m_defaultPropertyId; } diff --git a/src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.cpp b/src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.cpp index 8179ff625b8..776e6eb97a8 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.cpp +++ b/src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.cpp @@ -458,7 +458,9 @@ void addType(Storage::Synchronization::Types &types, createProperties(component.ownProperties(), enumerationTypes, componentNameWithoutNamespace), std::move(functionsDeclarations), std::move(signalDeclarations), - createEnumeration(enumerations)); + createEnumeration(enumerations), + Storage::Synchronization::ChangeLevel::Full, + Utils::SmallString{component.ownDefaultPropertyName()}); tracer.end(keyValue("type", type)); } diff --git a/tests/unit/tests/unittests/projectstorage/qmltypesparser-test.cpp b/tests/unit/tests/unittests/projectstorage/qmltypesparser-test.cpp index 78f8f41d6c4..a6b85404364 100644 --- a/tests/unit/tests/unittests/projectstorage/qmltypesparser-test.cpp +++ b/tests/unit/tests/unittests/projectstorage/qmltypesparser-test.cpp @@ -838,4 +838,17 @@ TEST_F(QmlTypesParser, uses_no_custom_parser) ASSERT_THAT(types, ElementsAre(IsTypeTrait(UsesCustomParser(false)))); } +TEST_F(QmlTypesParser, default_property) +{ + QString source{R"(import QtQuick.tooling 1.2 + Module{ + Component { name: "QObject" + defaultProperty: "children" }})"}; + + parser.parse(source, imports, types, projectData); + + ASSERT_THAT(types, + ElementsAre(Field(&Synchronization::Type::defaultPropertyName, Eq("children")))); +} + } // namespace