summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2022-06-27 11:07:32 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2022-06-27 08:20:21 +0000
commita627d43d39bc17e7144fda724cb41d944bded6a5 (patch)
treec97295d54b95e28f0ace21b224fa0d98555c06ca
parent21ef02a016f7921fab8f72e3fcea2147bb2cd018 (diff)
downloadqt-creator-a627d43d39bc17e7144fda724cb41d944bded6a5.tar.gz
QmlDesigner: Fix crash on mode change
Added model pointer validity checks into a few places. Fixes: QDS-7191 Change-Id: I94beb134f4d9a0b1c7fc9dc87da1d02ad255beaa Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp2
-rw-r--r--src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
index 2a06d5acbc..2d02ba1276 100644
--- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
+++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
@@ -290,6 +290,8 @@ void MaterialBrowserView::instancesCompleted(const QVector<ModelNode> &completed
if (node.isRootNode()) {
m_puppetResetPending = false;
QTimer::singleShot(1000, this, [this]() {
+ if (!model() || !model()->nodeInstanceView())
+ return;
const QList<ModelNode> materials = m_widget->materialBrowserModel()->materials();
for (const ModelNode &node : materials)
model()->nodeInstanceView()->previewImageDataForGenericNode(node, {});
diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp
index 8b3d693274..d86ef1463b 100644
--- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp
+++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp
@@ -416,6 +416,8 @@ void MaterialEditorView::handleToolBarAction(int action)
}
case MaterialEditorContextObject::AddNewMaterial: {
+ if (!model())
+ break;
executeInTransaction("MaterialEditorView:handleToolBarAction", [&] {
NodeMetaInfo metaInfo = model()->metaInfo("QtQuick3D.DefaultMaterial");
ModelNode newMatNode = createModelNode("QtQuick3D.DefaultMaterial", metaInfo.majorVersion(),
@@ -634,7 +636,7 @@ void MaterialEditorView::auxiliaryDataChanged(const ModelNode &node, const Prope
// request render image for the selected material node
void MaterialEditorView::requestPreviewRender()
{
- if (m_selectedMaterial.isValid())
+ if (model() && model()->nodeInstanceView() && m_selectedMaterial.isValid())
model()->nodeInstanceView()->previewImageDataForGenericNode(m_selectedMaterial, {});
}
@@ -740,6 +742,9 @@ void MaterialEditorView::duplicateMaterial(const ModelNode &material)
{
QTC_ASSERT(material.isValid(), return);
+ if (!model())
+ return;
+
TypeName matType = material.type();
QmlObjectNode sourceMat(material);