From 477a1a88c6b7f5e5a78a2bbc4a6fe7781b2a0525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Wed, 30 Sep 2015 22:52:55 +0200 Subject: GH-1262 fix relative paths for java binaries --- application/pages/InstanceSettingsPage.cpp | 17 ++++++++++++++--- application/pages/global/JavaPage.cpp | 17 ++++++++++++++--- 2 files changed, 28 insertions(+), 6 deletions(-) (limited to 'application/pages') 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 +#include 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() -- cgit v1.2.3