diff options
author | Ali Kianian <ali.kianian@qt.io> | 2025-04-09 17:39:29 +0300 |
---|---|---|
committer | Ali Kianian <ali.kianian@qt.io> | 2025-04-10 09:30:22 +0000 |
commit | ed1bece5ec9eba93a2cdcfbfc6599e2dc7dccd56 (patch) | |
tree | 293051ebb7262f820a2e86561a2f604e3d67f5af | |
parent | fc34c61913292e7a06ad0cfd3ef6aafe1248f46c (diff) |
ModelNode: Set type id when node type changes
Fixes: QDS-14946 Change-Id: If5c98db8b2e677a1fd5ad24671bfedda1348a968 Reviewed-by: Marco Bubke <marco.bubke@qt.io>
-rw-r--r-- | src/plugins/qmldesigner/libs/designercore/include/modelnode.h | 2 | ||||
-rw-r--r-- | src/plugins/qmldesigner/libs/designercore/model/model.cpp | 1 | ||||
-rw-r--r-- | tests/unit/tests/unittests/model/model-test.cpp | 12 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/plugins/qmldesigner/libs/designercore/include/modelnode.h b/src/plugins/qmldesigner/libs/designercore/include/modelnode.h index e9e060117ea..3053fe10258 100644 --- a/src/plugins/qmldesigner/libs/designercore/include/modelnode.h +++ b/src/plugins/qmldesigner/libs/designercore/include/modelnode.h @@ -104,7 +104,7 @@ public: NodeAbstractProperty parentProperty() const; void setParentProperty(NodeAbstractProperty parent); - void changeType(const TypeName &typeName, int majorVersion, int minorVersion); + void changeType(const TypeName &typeName, int majorVersion = -1, int minorVersion = -1); void setParentProperty(const ModelNode &newParentNode, const PropertyName &propertyName); bool hasParentProperty() const; diff --git a/src/plugins/qmldesigner/libs/designercore/model/model.cpp b/src/plugins/qmldesigner/libs/designercore/model/model.cpp index fb30f30e074..98d3e7f6669 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/libs/designercore/model/model.cpp @@ -303,6 +303,7 @@ void ModelPrivate::changeNodeType(const InternalNodePointer &node, const TypeNam node->typeName = typeName; node->majorVersion = majorVersion; node->minorVersion = minorVersion; + setTypeId(node.get(), typeName); try { notifyNodeTypeChanged(node, typeName, majorVersion, minorVersion); diff --git a/tests/unit/tests/unittests/model/model-test.cpp b/tests/unit/tests/unittests/model/model-test.cpp index 7066e27782d..3e9fd1bc5c3 100644 --- a/tests/unit/tests/unittests/model/model-test.cpp +++ b/tests/unit/tests/unittests/model/model-test.cpp @@ -1066,6 +1066,18 @@ TEST_F(Model_Node, create_qualified_model_node_has_meta_info) ASSERT_THAT(node.metaInfo(), model.qtQmlModelsListModelMetaInfo()); } +TEST_F(Model_Node, change_node_type_changes_meta_info) +{ + projectStorageMock.createImportedTypeNameId(filePathId, + "QtObject", + model.qmlQtObjectMetaInfo().id()); + auto node = model.createModelNode("Item"); + + node.changeType("QtObject"); + + ASSERT_THAT(node.metaInfo(), model.qmlQtObjectMetaInfo()); +} + TEST_F(Model_Node, change_root_node_type_changes_meta_info) { projectStorageMock.createImportedTypeNameId(filePathId, |