diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 4156c8e040c..743b06a6ed7 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -793,6 +793,11 @@ void Qt5InformationNodeInstanceServer::doRender3DEditView() m_editView3DData.window->afterRendering(); } #else + if (m_render2D) { + // Render 2D content, as it might be used by 3D content + grabWindow(); + m_render2D = false; + } renderImage = grabRenderControl(m_editView3DData); #endif @@ -1767,6 +1772,11 @@ void Qt5InformationNodeInstanceServer::changePropertyValues(const ChangeValuesCo if (!container.isReflected()) { hasDynamicProperties |= container.isDynamic(); setInstancePropertyVariant(container); + if (!m_render2D && isQuick3DMode() && hasInstanceForId(container.instanceId())) { + ServerNodeInstance instance = instanceForId(container.instanceId()); + if (instance.isSubclassOf("QQuickItem")) + m_render2D = true; + } } } @@ -1877,6 +1887,17 @@ void Qt5InformationNodeInstanceServer::changeAuxiliaryValues(const ChangeAuxilia void Qt5InformationNodeInstanceServer::changePropertyBindings(const ChangeBindingsCommand &command) { Qt5NodeInstanceServer::changePropertyBindings(command); + + const QVector &values = command.bindingChanges; + for (const PropertyBindingContainer &container : values) { + if (!m_render2D && isQuick3DMode() && hasInstanceForId(container.instanceId())) { + ServerNodeInstance instance = instanceForId(container.instanceId()); + if (instance.isSubclassOf("QQuickItem")) { + m_render2D = true; + break; + } + } + } render3DEditView(); } diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h index ed4f97d81be..fbe13c54da9 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h @@ -165,6 +165,7 @@ private: QList m_pendingInputEventCommands; QObject *m_3dHelper = nullptr; int m_need3DEditViewRender = 0; + bool m_render2D = true; }; } // namespace QmlDesigner