QmlDesigner: Fix possible crash on exit

Crash log:
https://sentry.io/organizations/the-qt-company-00/issues/3227370374/?project=5421708

Change-Id: I73b574d565cc1f66ddec1fedcb96e3acd7c1ad72
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Mahmoud Badri
2022-04-28 10:23:02 +03:00
parent c892157862
commit a984e9c097

View File

@@ -23,23 +23,24 @@
** **
****************************************************************************/ ****************************************************************************/
#include "designmodewidget.h"
#include "edit3dactions.h"
#include "edit3dcanvas.h"
#include "edit3dview.h" #include "edit3dview.h"
#include "edit3dwidget.h" #include "edit3dwidget.h"
#include "edit3dcanvas.h"
#include "edit3dactions.h"
#include "designmodewidget.h"
#include <nodeinstanceview.h>
#include <designeractionmanager.h>
#include <designersettings.h>
#include <qmldesignerconstants.h>
#include <qmldesignerplugin.h>
#include <viewmanager.h>
#include <qmldesignericons.h>
#include <designmodecontext.h>
#include <utils/utilsicons.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/messagebox.h> #include <coreplugin/messagebox.h>
#include <designeractionmanager.h>
#include <designersettings.h>
#include <designmodecontext.h>
#include <nodeinstanceview.h>
#include <qmldesignerconstants.h>
#include <qmldesignericons.h>
#include <qmldesignerplugin.h>
#include <viewmanager.h>
#include <utils/qtcassert.h>
#include <utils/utilsicons.h>
#include <QDebug> #include <QDebug>
#include <QToolButton> #include <QToolButton>
@@ -216,6 +217,8 @@ void Edit3DView::modelAttached(Model *model)
void Edit3DView::modelAboutToBeDetached(Model *model) void Edit3DView::modelAboutToBeDetached(Model *model)
{ {
QTC_ASSERT(edit3DWidget()->canvas(), return);
// Hide the canvas when model is detached (i.e. changing documents) // Hide the canvas when model is detached (i.e. changing documents)
m_canvasCache.insert(model, edit3DWidget()->canvas()->renderImage()); m_canvasCache.insert(model, edit3DWidget()->canvas()->renderImage());
edit3DWidget()->showCanvas(false); edit3DWidget()->showCanvas(false);