From 754be28e365e74d5462139eae418b0d7b7ed7af5 Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Thu, 22 Sep 2022 17:43:15 +0200 Subject: [PATCH] QmlDesigner: Fix state shown after reordering Fix an issue which caused the wrong state to be shown in the form editor after reordering the states in the state editor. Task-number: QDS-7753 Change-Id: I220bb5b11beb4f9bfc6a85069a688c9ff2984d8f Reviewed-by: Thomas Hartmann Reviewed-by: Qt CI Bot Reviewed-by: --- .../instances/qmlstatenodeinstance.cpp | 16 ++++++++++++++++ .../qml2puppet/instances/qmlstatenodeinstance.h | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp index 9b00f3c43ab..bc28b7076b3 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp @@ -118,5 +118,21 @@ bool QmlStateNodeInstance::resetStateProperty(const ObjectNodeInstance::Pointer return QmlPrivateGate::States::resetStateProperty(object(), target->object(), propertyName, resetValue); } +void QmlStateNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParentInstance, + const PropertyName &oldParentProperty, + const ObjectNodeInstance::Pointer &newParentInstance, + const PropertyName &newParentProperty) +{ + ServerNodeInstance oldState = nodeInstanceServer()->activeStateInstance(); + + ObjectNodeInstance::reparent(oldParentInstance, + oldParentProperty, + newParentInstance, + newParentProperty); + + if (oldState.isValid()) + oldState.activateState(); +} + } // namespace Internal } // namespace QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.h index 9870223fa75..800acfcad37 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.h @@ -49,6 +49,10 @@ public: bool updateStateBinding(const ObjectNodeInstance::Pointer &target, const PropertyName &propertyName, const QString &expression) override; bool resetStateProperty(const ObjectNodeInstance::Pointer &target, const PropertyName &propertyName, const QVariant &resetValue) override; + void reparent(const ObjectNodeInstance::Pointer &oldParentInstance, + const PropertyName &oldParentProperty, + const ObjectNodeInstance::Pointer &newParentInstance, + const PropertyName &newParentProperty) override; protected: QmlStateNodeInstance(QObject *object);