summaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-11-12 09:23:39 +0100
committerPetr Mrázek <peterix@gmail.com>2013-11-12 09:23:39 +0100
commitfdc58bb91360c04eed13a4fd4f8323a6a467dc37 (patch)
treec4cee6d1c623d60bd51bc254649749824f36d539 /gui
parente611aef0e77f727d0c77f6dea0d373e7a12b241c (diff)
downloadMultiMC-fdc58bb91360c04eed13a4fd4f8323a6a467dc37.tar
MultiMC-fdc58bb91360c04eed13a4fd4f8323a6a467dc37.tar.gz
MultiMC-fdc58bb91360c04eed13a4fd4f8323a6a467dc37.tar.lz
MultiMC-fdc58bb91360c04eed13a4fd4f8323a6a467dc37.tar.xz
MultiMC-fdc58bb91360c04eed13a4fd4f8323a6a467dc37.zip
Fix console not staying open on minecraft crash
Diffstat (limited to 'gui')
-rw-r--r--gui/ConsoleWindow.cpp9
-rw-r--r--gui/ConsoleWindow.h2
-rw-r--r--gui/MainWindow.cpp11
-rw-r--r--gui/MainWindow.h3
4 files changed, 14 insertions, 11 deletions
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 <QMainWindow>
+#include <QProcess>
#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();