From 0981868537ad3f98db1602cb504439d2901ebf49 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sat, 20 Dec 2014 09:42:07 -0800 Subject: [PATCH] DeleteOnClose causes strange Qt bug When using DeleteOnClose with a QQuickWidget, the shutdown sequence causes the MainWindow destructor loop back onto itself. --- src/QGCApplication.cc | 4 ++++ src/ui/MainWindow.cc | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index aff39d56a..f3f94515a 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -456,6 +456,10 @@ void QGCApplication::_createSingletons(void) void QGCApplication::_destroySingletons(void) { + if (MainWindow::instance()) { + delete MainWindow::instance(); + } + if (LinkManager::instance(true /* nullOk */)) { // This will close/delete all connections LinkManager::instance()->_shutdown(); diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index 8a3e1ced2..114d6a13b 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -127,7 +127,6 @@ MainWindow::MainWindow(QSplashScreen* splashScreen, enum MainWindow::CUSTOM_MODE connect(this, &MainWindow::initStatusChanged, splashScreen, &QSplashScreen::showMessage); } - this->setAttribute(Qt::WA_DeleteOnClose); connect(menuActionHelper, SIGNAL(needToShowDockWidget(QString,bool)),SLOT(showDockWidget(QString,bool))); connect(MAVLinkProtocol::instance(), SIGNAL(protocolStatusMessage(const QString&, const QString&)), this, SLOT(showCriticalMessage(const QString&, const QString&))); @@ -524,7 +523,7 @@ void MainWindow::buildCommonWidgets() { setupView = new SubMainWindow(this); setupView->setObjectName("VIEW_SETUP"); - setupView->setCentralWidget(new SetupView(this)); + setupView->setCentralWidget((QWidget*)new SetupView(this)); addToCentralStackedWidget(setupView, VIEW_SETUP, "Setup"); } if (!engineeringView) -- 2.22.0