From 0f2ade49f9819ee8ca63c5ee75bb66560e5760cc Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 12 Sep 2022 18:14:30 +0300 Subject: [PATCH] QmlDesigner: Set material preview aux values asynchronously on init This is done to avoid recursive writes to model. Change-Id: Ie7cdd9c38fc54276a2c6617ba51137fd78946f4a Reviewed-by: Thomas Hartmann --- .../components/materialeditor/materialeditorview.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp index 7191e040dc1..fb9facf57cc 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp @@ -634,9 +634,14 @@ void MaterialEditorView::initPreviewData() QString envValue = envValuePropVal ? envValuePropVal->toString() : ""; QString modelStr = modelStrPropVal ? modelStrPropVal->toString() : ""; // Initialize corresponding instance aux values used by puppet - rootModelNode().setAuxiliaryData(materialPreviewEnvProperty, env); - rootModelNode().setAuxiliaryData(materialPreviewEnvValueProperty, envValue); - rootModelNode().setAuxiliaryData(materialPreviewModelProperty, modelStr); + QTimer::singleShot(0, this, [this, env, envValue, modelStr]() { + if (model()) { + rootModelNode().setAuxiliaryData(materialPreviewEnvProperty, env); + rootModelNode().setAuxiliaryData(materialPreviewEnvValueProperty, envValue); + rootModelNode().setAuxiliaryData(materialPreviewModelProperty, modelStr); + } + }); + if (!envValue.isEmpty() && env != "Color" && env != "Basic") { env += '='; env += envValue;