diff --git a/launcher/ui/dialogs/NewInstanceDialog.cpp b/launcher/ui/dialogs/NewInstanceDialog.cpp index 135e8b3d..42130f49 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.cpp +++ b/launcher/ui/dialogs/NewInstanceDialog.cpp @@ -103,6 +103,8 @@ NewInstanceDialog::NewInstanceDialog(const QString & initialGroup, const QString importPage->setUrl(url); } + connect(APPLICATION, &QApplication::focusChanged, this, &NewInstanceDialog::onFocusChanged); + updateDialogState(); restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("NewInstanceGeometry").toByteArray())); @@ -150,10 +152,14 @@ NewInstanceDialog::~NewInstanceDialog() void NewInstanceDialog::setSuggestedPack(const QString& name, InstanceTask* task) { creationTask.reset(task); - ui->instNameTextBox->setPlaceholderText(name); - ui->instNameTextBox->setText(name); - ui->instNameTextBox->selectAll(); - ui->instNameTextBox->setFocus(); + + defaultInstName = name; + + if (!instNameChanged) + { + ui->instNameTextBox->setPlaceholderText(name); + ui->instNameTextBox->setText(name); + } if(!task) { @@ -241,11 +247,29 @@ void NewInstanceDialog::on_iconButton_clicked() } } +void NewInstanceDialog::on_resetNameButton_clicked() +{ + ui->instNameTextBox->setText(defaultInstName); + instNameChanged = false; +} + void NewInstanceDialog::on_instNameTextBox_textChanged(const QString &arg1) { updateDialogState(); } +void NewInstanceDialog::on_instNameTextBox_textEdited(const QString &text) +{ + instNameChanged = true; +} + +void NewInstanceDialog::onFocusChanged(QWidget *, QWidget *newWidget) +{ + if (newWidget == ui->instNameTextBox && !instNameChanged) { + QTimer::singleShot(0, ui->instNameTextBox, &QLineEdit::selectAll); + } +} + void NewInstanceDialog::importIconNow() { if(importIcon) { diff --git a/launcher/ui/dialogs/NewInstanceDialog.h b/launcher/ui/dialogs/NewInstanceDialog.h index 3a100b77..a001acea 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.h +++ b/launcher/ui/dialogs/NewInstanceDialog.h @@ -56,10 +56,13 @@ public: public slots: void accept() override; void reject() override; + void onFocusChanged(QWidget *, QWidget *newWidget); private slots: void on_iconButton_clicked(); + void on_resetNameButton_clicked(); void on_instNameTextBox_textChanged(const QString &arg1); + void on_instNameTextBox_textEdited(const QString &text); private: Ui::NewInstanceDialog *ui = nullptr; @@ -75,4 +78,7 @@ private: QString importIconName; void importIconNow(); + + QString defaultInstName; + bool instNameChanged = false; }; diff --git a/launcher/ui/dialogs/NewInstanceDialog.ui b/launcher/ui/dialogs/NewInstanceDialog.ui index 7fb19ff5..90d6bf39 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.ui +++ b/launcher/ui/dialogs/NewInstanceDialog.ui @@ -26,6 +26,9 @@ + + + @@ -33,6 +36,16 @@ + + + + &Name: + + + instNameTextBox + + + @@ -43,19 +56,6 @@ - - - - - - - &Name: - - - instNameTextBox - - - @@ -66,6 +66,13 @@ + + + + Reset + + +