forked from qt-creator/qt-creator
QmlDesigner: Switch to basestate before setting expression in state
When setting an expression in a state then the revert list is not properly managed. Therefore we have to temporarily enter the basestate to set the expression. Task-number: QDS-7801 Change-Id: I4f653e83db4a2d05b1cc0b67d22581cee84557ff Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -50,7 +50,20 @@ void QmlPropertyChangesNodeInstance::setPropertyBinding(const PropertyName &name
|
|||||||
if (QmlPrivateGate::PropertyChanges::isNormalProperty(name)) { // 'restoreEntryValues', 'explicit'
|
if (QmlPrivateGate::PropertyChanges::isNormalProperty(name)) { // 'restoreEntryValues', 'explicit'
|
||||||
ObjectNodeInstance::setPropertyBinding(name, expression);
|
ObjectNodeInstance::setPropertyBinding(name, expression);
|
||||||
} else {
|
} 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);
|
QmlPrivateGate::PropertyChanges::changeExpression(object(), name, expression);
|
||||||
|
|
||||||
|
if (inState)
|
||||||
|
activeState.activateState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user