diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-05-01 01:27:10 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-05-01 01:27:10 +0200 |
commit | 21df531db1935f6b01411a729e3f45b634f6d9c9 (patch) | |
tree | e07c06ecc27b14aed70b18a6dd62bd2a3ae60fd2 /application | |
parent | f06ac02396c8dfd002db80453963cb61bddce080 (diff) | |
download | MultiMC-21df531db1935f6b01411a729e3f45b634f6d9c9.tar MultiMC-21df531db1935f6b01411a729e3f45b634f6d9c9.tar.gz MultiMC-21df531db1935f6b01411a729e3f45b634f6d9c9.tar.lz MultiMC-21df531db1935f6b01411a729e3f45b634f6d9c9.tar.xz MultiMC-21df531db1935f6b01411a729e3f45b634f6d9c9.zip |
GH-1873 allow closing main window, fix window ref count
Diffstat (limited to 'application')
-rw-r--r-- | application/MainWindow.cpp | 21 | ||||
-rw-r--r-- | application/MainWindow.h | 3 | ||||
-rw-r--r-- | application/MultiMC.cpp | 11 |
3 files changed, 10 insertions, 25 deletions
diff --git a/application/MainWindow.cpp b/application/MainWindow.cpp index 2ab37e54..08afbbb3 100644 --- a/application/MainWindow.cpp +++ b/application/MainWindow.cpp @@ -1403,28 +1403,11 @@ void MainWindow::on_actionViewSelectedInstFolder_triggered() void MainWindow::closeEvent(QCloseEvent *event) { - if(MMC->numRunningInstances()) - { - auto resBtn = QMessageBox::question( - this, - tr("Do you want to close MultiMC?"), - tr("<p>You still have instances running.</p><p>Closing MultiMC will result in inaccurate time tracking and no Minecraft crash handling.</p><p>Are you sure?</p>"), - QMessageBox::No | QMessageBox::Yes, - QMessageBox::Yes - ); - if (resBtn != QMessageBox::Yes) - { - event->ignore(); - return; - } - } - - // no running instances or user said yes. - event->accept(); // Save the window state and geometry. MMC->settings()->set("MainWindowState", saveState().toBase64()); MMC->settings()->set("MainWindowGeometry", saveGeometry().toBase64()); - QApplication::exit(); + event->accept(); + emit isClosing(); } void MainWindow::changeEvent(QEvent* event) diff --git a/application/MainWindow.h b/application/MainWindow.h index e21d2830..e8a22b4d 100644 --- a/application/MainWindow.h +++ b/application/MainWindow.h @@ -54,6 +54,9 @@ public: void checkInstancePathForProblems(); +signals: + void isClosing(); + private slots: void onCatToggled(bool); diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp index 85756069..bac81f8f 100644 --- a/application/MultiMC.cpp +++ b/application/MultiMC.cpp @@ -444,8 +444,6 @@ void MultiMC::performMainStartupAction() auto inst = instances()->getInstanceById(m_instanceIdToLaunch); if(inst) { - // minimized main window - showMainWindow(true); launch(inst, true, nullptr); return; } @@ -1020,7 +1018,7 @@ void MultiMC::controllerSucceeded() if(m_openWindows == 0 && m_runningInstances == 0) { m_status = Status::Succeeded; - quit(); + exit(0); } } @@ -1041,7 +1039,7 @@ void MultiMC::controllerFailed(const QString& error) if(m_openWindows == 0 && m_runningInstances == 0) { m_status = Status::Failed; - quit(); + exit(1); } } @@ -1068,6 +1066,7 @@ MainWindow* MultiMC::showMainWindow(bool minimized) } m_mainWindow->checkInstancePathForProblems(); + connect(m_mainWindow, &MainWindow::isClosing, this, &MultiMC::on_windowClose); m_openWindows++; } // FIXME: move this somewhere else... @@ -1157,9 +1156,9 @@ void MultiMC::on_windowClose() m_mainWindow = nullptr; } // quit when there are no more windows. - if(m_openWindows == 0) + if(m_openWindows == 0 && m_runningInstances == 0) { - quit(); + exit(0); } } |