diff --git a/src/tools/qml2puppet/qml2puppet/instances/qmlpropertychangesnodeinstance.cpp b/src/tools/qml2puppet/qml2puppet/instances/qmlpropertychangesnodeinstance.cpp index e836cd49a30..e3538320132 100644 --- a/src/tools/qml2puppet/qml2puppet/instances/qmlpropertychangesnodeinstance.cpp +++ b/src/tools/qml2puppet/qml2puppet/instances/qmlpropertychangesnodeinstance.cpp @@ -50,7 +50,20 @@ void QmlPropertyChangesNodeInstance::setPropertyBinding(const PropertyName &name if (QmlPrivateGate::PropertyChanges::isNormalProperty(name)) { // 'restoreEntryValues', 'explicit' ObjectNodeInstance::setPropertyBinding(name, expression); } else { + QObject *state = QmlPrivateGate::PropertyChanges::stateObject(object()); + + ServerNodeInstance activeState = nodeInstanceServer()->activeStateInstance(); + auto activeStateInstance = activeState.internalInstance(); + + const bool inState = activeStateInstance && activeStateInstance->object() == state; + + if (inState) + activeState.deactivateState(); + QmlPrivateGate::PropertyChanges::changeExpression(object(), name, expression); + + if (inState) + activeState.activateState(); } }