diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml index 22b8b0675aa..643b377e8b3 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml @@ -141,6 +141,14 @@ Item { _generalHelper.enableItemUpdate(editView, (scene && scene === activeScene)); } + function handleActiveSceneIdChange(newId) + { + if (sceneId !== newId) { + sceneId = newId; + storeCurrentToolStates(); + } + } + function fitToView() { if (editView) { diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index abed28978ee..2a2c7fce8fa 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -1253,12 +1253,26 @@ void Qt5InformationNodeInstanceServer::changeIds(const ChangeIdsCommand &command { Qt5NodeInstanceServer::changeIds(command); +#ifdef QUICK3D_MODULE + ServerNodeInstance sceneInstance = active3DSceneInstance(); if (m_active3DSceneUpdatePending) { - ServerNodeInstance sceneInstance = active3DSceneInstance(); const QString sceneId = sceneInstance.id(); if (!sceneId.isEmpty()) updateActiveSceneToEditView3D(); + } else { + qint32 sceneInstanceId = sceneInstance.instanceId(); + const QVector ids = command.ids(); + for (const auto &id : ids) { + if (sceneInstanceId == id.instanceId()) { + QMetaObject::invokeMethod(m_editView3DRootItem, "handleActiveSceneIdChange", + Qt::QueuedConnection, + Q_ARG(QVariant, QVariant(sceneInstance.id()))); + render3DEditView(); + break; + } + } } +#endif } void Qt5InformationNodeInstanceServer::changeState(const ChangeStateCommand &command)