Captain: exit captain mode before closeEvent() to avoid crash

This commit is contained in:
Le Tan 2018-08-07 20:59:58 +08:00
parent 77954a7d64
commit 29c0701e6b
3 changed files with 7 additions and 3 deletions

View File

@ -190,7 +190,9 @@ void VCaptain::restoreFocus()
void VCaptain::exitCaptainMode() void VCaptain::exitCaptainMode()
{ {
if (checkMode(CaptainMode::Navigation)) { if (checkMode(CaptainMode::Normal)) {
return;
} else if (checkMode(CaptainMode::Navigation)) {
exitNavigationMode(); exitNavigationMode();
} }

View File

@ -45,6 +45,8 @@ public:
void setCaptainModeEnabled(bool p_enabled); void setCaptainModeEnabled(bool p_enabled);
void exitCaptainMode();
signals: signals:
// Emit when mode changed. // Emit when mode changed.
void captainModeChanged(bool p_captainMode); void captainModeChanged(bool p_captainMode);
@ -140,8 +142,6 @@ private:
// Exit navigation mode to ask all targets hide themselves. // Exit navigation mode to ask all targets hide themselves.
void exitNavigationMode(); void exitNavigationMode();
void exitCaptainMode();
// Called to trigger the action of a Captain target which has // Called to trigger the action of a Captain target which has
// registered @p_key. // registered @p_key.
void triggerCaptainTarget(const QString &p_key); void triggerCaptainTarget(const QString &p_key);

View File

@ -2134,6 +2134,8 @@ void VMainWindow::closeEvent(QCloseEvent *event)
bool isExit = m_requestQuit || !g_config->getMinimizeToStystemTray(); bool isExit = m_requestQuit || !g_config->getMinimizeToStystemTray();
m_requestQuit = false; m_requestQuit = false;
m_captain->exitCaptainMode();
#if defined(Q_OS_MACOS) || defined(Q_OS_MAC) #if defined(Q_OS_MACOS) || defined(Q_OS_MAC)
// Do not support minimized to tray on macOS. // Do not support minimized to tray on macOS.
isExit = true; isExit = true;