Browse Source

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

Le Tan 7 years ago
parent
commit
29c0701e6b
3 changed files with 7 additions and 3 deletions
  1. 3 1
      src/vcaptain.cpp
  2. 2 2
      src/vcaptain.h
  3. 2 0
      src/vmainwindow.cpp

+ 3 - 1
src/vcaptain.cpp

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

+ 2 - 2
src/vcaptain.h

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

+ 2 - 0
src/vmainwindow.cpp

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