From fdc58bb91360c04eed13a4fd4f8323a6a467dc37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 12 Nov 2013 09:23:39 +0100 Subject: Fix console not staying open on minecraft crash --- gui/ConsoleWindow.cpp | 9 +++++---- gui/ConsoleWindow.h | 2 +- gui/MainWindow.cpp | 11 ++++++----- gui/MainWindow.h | 3 ++- 4 files changed, 14 insertions(+), 11 deletions(-) (limited to 'gui') diff --git a/gui/ConsoleWindow.cpp b/gui/ConsoleWindow.cpp index ec25b9cf..a3f294e6 100644 --- a/gui/ConsoleWindow.cpp +++ b/gui/ConsoleWindow.cpp @@ -122,14 +122,15 @@ void ConsoleWindow::on_btnKillMinecraft_clicked() ui->btnKillMinecraft->setEnabled(true); } -void ConsoleWindow::onEnded(BaseInstance *instance) +void ConsoleWindow::onEnded(BaseInstance* instance, int code, QProcess::ExitStatus status) { ui->btnKillMinecraft->setEnabled(false); - // TODO: Might need an option to forcefully close, even on an error if(instance->settings().get("AutoCloseConsole").toBool()) { - // TODO: Check why this doesn't work - if (!proc->exitCode()) this->close(); + if (code == 0 && status != QProcess::CrashExit) + { + this->close(); + } } } diff --git a/gui/ConsoleWindow.h b/gui/ConsoleWindow.h index 0ed35554..65786c7e 100644 --- a/gui/ConsoleWindow.h +++ b/gui/ConsoleWindow.h @@ -66,7 +66,7 @@ private slots: void on_closeButton_clicked(); void on_btnKillMinecraft_clicked(); - void onEnded(BaseInstance *instance); + void onEnded(BaseInstance *instance, int code, QProcess::ExitStatus status); protected: void closeEvent(QCloseEvent *); diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index 62ae195b..c0815d18 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -131,8 +131,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi view->installEventFilter(this); proxymodel = new InstanceProxyModel(this); -// proxymodel->setSortRole(KCategorizedSortFilterProxyModel::CategorySortRole); - //proxymodel->setFilterRole(KCategorizedSortFilterProxyModel::CategorySortRole); + // proxymodel->setSortRole(KCategorizedSortFilterProxyModel::CategorySortRole); + // proxymodel->setFilterRole(KCategorizedSortFilterProxyModel::CategorySortRole); // proxymodel->setDynamicSortFilter ( true ); // FIXME: instList should be global-ish, or at least not tied to the main window... @@ -422,7 +422,7 @@ void MainWindow::on_actionSettings_triggered() { SettingsDialog dialog(this); dialog.exec(); - //FIXME: quick HACK to make this work. improve, optimize. + // FIXME: quick HACK to make this work. improve, optimize. proxymodel->invalidate(); proxymodel->sort(0); } @@ -725,7 +725,8 @@ void MainWindow::launchInstance(BaseInstance *instance, LoginResponse response) connect(proc, SIGNAL(log(QString, MessageLevel::Enum)), console, SLOT(write(QString, MessageLevel::Enum))); - connect(proc, SIGNAL(ended(BaseInstance *)), this, SLOT(instanceEnded(BaseInstance *))); + connect(proc, SIGNAL(ended(BaseInstance *, int, ExitStatus)), this, + SLOT(instanceEnded(BaseInstance *, int, ExitStatus))); if (instance->settings().get("ShowConsole").toBool()) { @@ -882,7 +883,7 @@ void MainWindow::on_actionEditInstNotes_triggered() } } -void MainWindow::instanceEnded(BaseInstance *instance) +void MainWindow::instanceEnded(BaseInstance *instance, int code, QProcess::ExitStatus status) { this->show(); ui->actionLaunchInstance->setEnabled(m_selectedInstance); diff --git a/gui/MainWindow.h b/gui/MainWindow.h index 97aa0d9f..798df0f9 100644 --- a/gui/MainWindow.h +++ b/gui/MainWindow.h @@ -16,6 +16,7 @@ #pragma once #include +#include #include "logic/lists/InstanceList.h" #include "logic/net/LoginTask.h" @@ -115,7 +116,7 @@ slots: void on_actionChangeInstLWJGLVersion_triggered(); - void instanceEnded(BaseInstance *instance); + void instanceEnded(BaseInstance *instance, int code, QProcess::ExitStatus status); void on_actionInstanceSettings_triggered(); -- cgit v1.2.3