aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp')
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp38
1 files changed, 27 insertions, 11 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp
index 82af9150d35..2dd653273cd 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp
@@ -135,7 +135,7 @@ void IconRenderer::setupRender()
resizeContent(m_size);
if (!initRhi())
QTimer::singleShot(0, qGuiApp, &QGuiApplication::quit);
- QTimer::singleShot(0, this, &IconRenderer::createIcon);
+ QTimer::singleShot(0, this, &IconRenderer::startCreateIcon);
} else {
QTimer::singleShot(0, qGuiApp, &QGuiApplication::quit);
}
@@ -144,25 +144,41 @@ void IconRenderer::setupRender()
}
}
-void IconRenderer::createIcon()
+void IconRenderer::startCreateIcon()
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
m_designerSupport.refFromEffectItem(m_containerItem, false);
#endif
QQuickDesignerSupportItems::disableNativeTextRendering(m_containerItem);
+
+ if (m_is3D)
+ QTimer::singleShot(0, this, &IconRenderer::focusCamera);
+ else
+ QTimer::singleShot(0, this, &IconRenderer::finishCreateIcon);
+}
+
+void IconRenderer::focusCamera()
+{
#ifdef QUICK3D_MODULE
- if (m_is3D) {
- // Render once to make sure scene is up to date before we set up the selection box
- render({});
+ if (m_focusStep >= 10) {
+ QTimer::singleShot(0, this, &IconRenderer::finishCreateIcon);
+ return;
+ }
+
+ render({});
+
+ if (m_focusStep == 0) {
QMetaObject::invokeMethod(m_containerItem, "setSceneToBox");
- int tries = 0;
- while (tries < 10) {
- ++tries;
- render({});
- QMetaObject::invokeMethod(m_containerItem, "fitAndHideBox");
- }
+ } else if (m_focusStep > 1 && m_focusStep < 10) {
+ QMetaObject::invokeMethod(m_containerItem, "fitAndHideBox");
}
+ ++m_focusStep;
+ QTimer::singleShot(0, this, &IconRenderer::focusCamera);
#endif
+}
+
+void IconRenderer::finishCreateIcon()
+{
QFileInfo fi(m_filePath);
// Render regular size image