AssetImporter: Fix design system bindings for newly created types

Change-Id: I576db008bc309ee5715cc2247f9f3f06d81c0818
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Przemyslaw Lewandowski
2024-09-24 16:01:28 +02:00
committed by Thomas Hartmann
parent 49d1c12277
commit fa8b156795

View File

@@ -1432,6 +1432,9 @@ QmlDesigner::PropertyName TextToModelMerger::syncScriptBinding(ModelNode &modelN
prefix, prefix,
script->qualifiedId, script->qualifiedId,
astValue); astValue);
// Can happen if the type was just created and was not fully processed yet
const bool newlyCreatedTypeCase = !modelNode.metaInfo().properties().size();
if (enumValue.isValid()) { // It is a qualified enum: if (enumValue.isValid()) { // It is a qualified enum:
AbstractProperty modelProperty = modelNode.property(astPropertyName.toUtf8()); AbstractProperty modelProperty = modelNode.property(astPropertyName.toUtf8());
syncVariantProperty(modelProperty, enumValue, TypeName(), differenceHandler); // TODO: parse type syncVariantProperty(modelProperty, enumValue, TypeName(), differenceHandler); // TODO: parse type
@@ -1439,7 +1442,8 @@ QmlDesigner::PropertyName TextToModelMerger::syncScriptBinding(ModelNode &modelN
} else { // Not an enum, so: } else { // Not an enum, so:
if (isPropertyChangesType(modelNode.type()) || isConnectionsType(modelNode.type()) if (isPropertyChangesType(modelNode.type()) || isConnectionsType(modelNode.type())
|| isSupportedAttachedProperties(astPropertyName) || isSupportedAttachedProperties(astPropertyName)
|| modelNode.metaInfo().hasProperty(astPropertyName.toUtf8())) { || modelNode.metaInfo().hasProperty(astPropertyName.toUtf8())
|| newlyCreatedTypeCase) {
AbstractProperty modelProperty = modelNode.property(astPropertyName.toUtf8()); AbstractProperty modelProperty = modelNode.property(astPropertyName.toUtf8());
syncExpressionProperty(modelProperty, astValue, TypeName(), differenceHandler); // TODO: parse type syncExpressionProperty(modelProperty, astValue, TypeName(), differenceHandler); // TODO: parse type
return astPropertyName.toUtf8(); return astPropertyName.toUtf8();