diff options
Diffstat (limited to 'application/pages')
-rw-r--r-- | application/pages/InstanceSettingsPage.cpp | 17 | ||||
-rw-r--r-- | application/pages/global/JavaPage.cpp | 17 |
2 files changed, 28 insertions, 6 deletions
diff --git a/application/pages/InstanceSettingsPage.cpp b/application/pages/InstanceSettingsPage.cpp index 91b997d6..35cbefe5 100644 --- a/application/pages/InstanceSettingsPage.cpp +++ b/application/pages/InstanceSettingsPage.cpp @@ -10,6 +10,7 @@ #include "MultiMC.h" #include <java/JavaVersionList.h> +#include <pathutils.h> InstanceSettingsPage::InstanceSettingsPage(BaseInstance *inst, QWidget *parent) : QWidget(parent), ui(new Ui::InstanceSettingsPage), m_instance(inst) @@ -184,11 +185,21 @@ void InstanceSettingsPage::on_javaDetectBtn_clicked() void InstanceSettingsPage::on_javaBrowseBtn_clicked() { - QString dir = QFileDialog::getOpenFileName(this, tr("Find Java executable")); - if (!dir.isNull()) + QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable")); + QString cooked_path = NormalizePath(raw_path); + + // do not allow current dir - it's dirty. Do not allow dirs that don't exist + if(cooked_path.isEmpty()) + { + return; + } + + QFileInfo javaInfo(cooked_path);; + if(!javaInfo.exists() || !javaInfo.isExecutable()) { - ui->javaPathTextBox->setText(dir); + return; } + ui->javaPathTextBox->setText(cooked_path); } void InstanceSettingsPage::on_javaTestBtn_clicked() diff --git a/application/pages/global/JavaPage.cpp b/application/pages/global/JavaPage.cpp index 9b35d1f3..18882ad9 100644 --- a/application/pages/global/JavaPage.cpp +++ b/application/pages/global/JavaPage.cpp @@ -105,13 +105,24 @@ void JavaPage::on_javaDetectBtn_clicked() ui->javaPathTextBox->setText(java->path); } } + void JavaPage::on_javaBrowseBtn_clicked() { - QString dir = QFileDialog::getOpenFileName(this, tr("Find Java executable")); - if (!dir.isNull()) + QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable")); + QString cooked_path = NormalizePath(raw_path); + + // do not allow current dir - it's dirty. Do not allow dirs that don't exist + if(cooked_path.isEmpty()) { - ui->javaPathTextBox->setText(dir); + return; + } + + QFileInfo javaInfo(cooked_path);; + if(!javaInfo.exists() || !javaInfo.isExecutable()) + { + return; } + ui->javaPathTextBox->setText(cooked_path); } void JavaPage::on_javaTestBtn_clicked() |