From 02d02acf8a0544024b4ee54259503a0834e13e2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kaj=20Gr=C3=B6nholm?= <kaj.gronholm@qt.io> Date: Mon, 30 Mar 2020 09:33:23 +0300 Subject: [PATCH] Fix importScene with external component MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When importScene is used directly with external component, don't add content as children again. Task-number: QTBUG-83141 Change-Id: Ibe92c9fede694bd2df5b474d2f0132f117eb5b97 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io> --- src/quick3d/qquick3dscenerenderer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/quick3d/qquick3dscenerenderer.cpp b/src/quick3d/qquick3dscenerenderer.cpp index e1706d21c..e26fb004a 100644 --- a/src/quick3d/qquick3dscenerenderer.cpp +++ b/src/quick3d/qquick3dscenerenderer.cpp @@ -341,8 +341,14 @@ void QQuick3DSceneRenderer::synchronize(QQuick3DViewport *item, const QSize &siz if (m_importRootNode) removeNodeFromLayer(m_importRootNode); - if (importRootNode) - m_layer->addChildrenToLayer(*importRootNode); + if (importRootNode) { + // if root node has already parent at this point + // it means "importScene: MyScene { }" type of inclusion. + // In this case don't duplicate content by adding it again. + const bool isEmbedded = importRootNode->parent; + if (!isEmbedded) + m_layer->addChildrenToLayer(*importRootNode); + } m_importRootNode = importRootNode; } -- GitLab