aboutsummaryrefslogtreecommitdiffstats
diff options
authorAli Kianian <ali.kianian@qt.io>2025-04-09 17:39:29 +0300
committerAli Kianian <ali.kianian@qt.io>2025-04-10 09:30:22 +0000
commited1bece5ec9eba93a2cdcfbfc6599e2dc7dccd56 (patch)
tree293051ebb7262f820a2e86561a2f604e3d67f5af
parentfc34c61913292e7a06ad0cfd3ef6aafe1248f46c (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.h2
-rw-r--r--src/plugins/qmldesigner/libs/designercore/model/model.cpp1
-rw-r--r--tests/unit/tests/unittests/model/model-test.cpp12
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,
close