From ff99c2213ba623780f7e30105803022a5eac41ed Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 2 Oct 2020 12:51:38 +0200 Subject: [PATCH] QmlDesigner: Fix crash We have to call updateEnabledViews() in the correct places. AbstractView::modelAboutToBeDetached() was to late, since the view is already removed at this point. Change-Id: I6d71d5ea773fb7ec8ec258344498a229a30dd9b3 Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/designercore/model/abstractview.cpp | 4 ---- src/plugins/qmldesigner/designercore/model/model.cpp | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp index d7858cce7c0..85e50b3c8cd 100644 --- a/src/plugins/qmldesigner/designercore/model/abstractview.cpp +++ b/src/plugins/qmldesigner/designercore/model/abstractview.cpp @@ -185,11 +185,7 @@ is removing the reference to the model from the view. */ void AbstractView::modelAboutToBeDetached(Model *) { - Model *oldModel = model(); removeModel(); - - if (oldModel) - oldModel->d->updateEnabledViews(); } /*! diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index 26ac47dfae7..f31aaeecdcf 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -101,6 +101,7 @@ void ModelPrivate::detachAllViews() detachView(view.data(), true); m_viewList.clear(); + updateEnabledViews(); if (m_nodeInstanceView) { m_nodeInstanceView->modelAboutToBeDetached(m_q); @@ -951,6 +952,7 @@ void ModelPrivate::detachView(AbstractView *view, bool notifyView) if (notifyView) view->modelAboutToBeDetached(m_q); m_viewList.removeOne(view); + updateEnabledViews(); } void ModelPrivate::notifyNodeCreated(const InternalNode::Pointer &newInternalNodePointer)