QmlDesigner: Block preview data change handling when initializing

Handling the data change is pointless when we are initializing UI
to stored values, and can also trigger undesirable secondary effects
like showing color selection dialog.

Fixes: QDS-7415
Change-Id: I0321c47d5a63971dc890c37f90ec6fedc8293eca
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Miikka Heikkinen
2022-08-15 14:57:56 +03:00
parent 326f70c40f
commit e4b35fa576
2 changed files with 5 additions and 2 deletions

View File

@@ -453,7 +453,7 @@ void MaterialEditorView::handleToolBarAction(int action)
void MaterialEditorView::handlePreviewEnvChanged(const QString &envAndValue)
{
if (envAndValue.isEmpty())
if (envAndValue.isEmpty() || m_initializingPreviewData)
return;
QTC_ASSERT(m_hasQuick3DImport, return);
@@ -514,7 +514,7 @@ void MaterialEditorView::handlePreviewEnvChanged(const QString &envAndValue)
void MaterialEditorView::handlePreviewModelChanged(const QString &modelStr)
{
if (modelStr.isEmpty())
if (modelStr.isEmpty() || m_initializingPreviewData)
return;
QTC_ASSERT(m_hasQuick3DImport, return);
@@ -655,9 +655,11 @@ void MaterialEditorView::initPreviewData()
env = "Default";
if (modelStr.isEmpty())
modelStr = "#Sphere";
m_initializingPreviewData = true;
QMetaObject::invokeMethod(m_qmlBackEnd->widget()->rootObject(),
"initPreviewData",
Q_ARG(QVariant, env), Q_ARG(QVariant, modelStr));
m_initializingPreviewData = false;
}
}

View File

@@ -138,6 +138,7 @@ private:
bool m_setupCompleted = false;
bool m_hasQuick3DImport = false;
bool m_hasMaterialRoot = false;
bool m_initializingPreviewData = false;
QPointer<QColorDialog> m_colorDialog;
QPointer<ItemLibraryInfo> m_itemLibraryInfo;