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 <thomas.hartmann@qt.io>
This commit is contained in:
Miikka Heikkinen
2022-09-12 18:14:30 +03:00
parent da5a6b4cfb
commit 0f2ade49f9

View File

@@ -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;