Browse Source

Merge pull request #1789 from DonLakeFlyer/WindowsClose

Queue delayed window close if open connections
QGC4.4
Don Gagne 10 years ago
parent
commit
d63457c5da
  1. 8
      src/ui/MainWindow.cc
  2. 1
      src/ui/MainWindow.h

8
src/ui/MainWindow.cc

@ -636,11 +636,15 @@ void MainWindow::closeEvent(QCloseEvent *event) @@ -636,11 +636,15 @@ void MainWindow::closeEvent(QCloseEvent *event)
QMessageBox::Cancel);
if (button == QMessageBox::Yes) {
LinkManager::instance()->disconnectAll();
} else {
// The above disconnect causes a flurry of activity as the vehicle components are removed. This in turn
// causes the Windows Version of Qt to crash if you allow the close event to be accepted. In order to prevent
// the crash, we ignore the close event and setup a delayed timer to close the window after things settle down.
QTimer::singleShot(1500, this, &MainWindow::_closeWindow);
}
event->ignore();
return;
}
}
// This will process any remaining flight log save dialogs
qgcApp()->processEvents(QEventLoop::ExcludeUserInputEvents);

1
src/ui/MainWindow.h

@ -287,6 +287,7 @@ private slots: @@ -287,6 +287,7 @@ private slots:
#ifdef UNITTEST_BUILD
void _showQmlTestWidget(void);
#endif
void _closeWindow(void) { close(); }
private:
/// Constructor is private since all creation should be through MainWindow::_create

Loading…
Cancel
Save