diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 6b6ddadeaec..257ff92dacb 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -147,6 +147,22 @@ bool Qt5InformationNodeInstanceServer::isDirtyRecursiveForParentInstances(QQuick return false; } +QObject *Qt5InformationNodeInstanceServer::findRootNodeOf3DViewport( + const QList &instanceList) const +{ + for (const ServerNodeInstance &instance : instanceList) { + if (instance.isSubclassOf("QQuick3DViewport")) { + for (const ServerNodeInstance &child : instanceList) { /* Look for scene node */ + /* The QQuick3DViewport always creates a root node. + * This root node contains the complete scene. */ + if (child.isSubclassOf("QQuick3DNode") && child.parent() == instance) + return child.internalObject()->property("parent").value(); + } + } + } + return nullptr; +} + void Qt5InformationNodeInstanceServer::setup3DEditView(const QList &instanceList) { ServerNodeInstance root = rootNodeInstance(); @@ -157,15 +173,8 @@ void Qt5InformationNodeInstanceServer::setup3DEditView(const QList &instanceList); + QObject *findRootNodeOf3DViewport(const QList &instanceList) const; QSet m_parentChangedSet; QList m_completedComponentList;