From 0192cef3bb031ca7afbd07d8be805cc4b84a071f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 9 Sep 2022 16:32:38 +0200 Subject: [PATCH] QmlDesigner: Make DynamicPropertyRow::commitValue state aware Change-Id: I2f6d93be6fe1f92637902138ac9f073f18f1af22 Reviewed-by: Miikka Heikkinen --- .../propertyeditor/dynamicpropertiesproxymodel.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/propertyeditor/dynamicpropertiesproxymodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/dynamicpropertiesproxymodel.cpp index 4ea4e948091..4fc1326c6e4 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/dynamicpropertiesproxymodel.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/dynamicpropertiesproxymodel.cpp @@ -336,8 +336,16 @@ void DynamicPropertyRow::commitValue(const QVariant &value) RewriterTransaction transaction = view->beginRewriterTransaction( QByteArrayLiteral("DynamicPropertiesModel::commitValue")); try { - if (variantProperty.value() != value) - variantProperty.setDynamicTypeNameAndValue(variantProperty.dynamicTypeName(), value); + if (view->currentState().isBaseState()) { + if (variantProperty.value() != value) + variantProperty.setDynamicTypeNameAndValue(variantProperty.dynamicTypeName(), value); + } else { + QmlObjectNode objectNode = variantProperty.parentQmlObjectNode(); + QTC_CHECK(objectNode.isValid()); + PropertyName name = variantProperty.name(); + if (objectNode.isValid() && objectNode.modelValue(name) != value) + objectNode.setVariantProperty(name, value); + } transaction.commit(); //committing in the try block } catch (Exception &e) { e.showException();