ModelNode: Set type id when node type changes

Fixes: QDS-14946
Change-Id: If5c98db8b2e677a1fd5ad24671bfedda1348a968
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Ali Kianian
2025-04-09 17:39:29 +03:00
parent fc34c61913
commit ed1bece5ec
3 changed files with 14 additions and 1 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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,