From b4a82bfcdd3d57585ebb2d0698c93e2ea9184d93 Mon Sep 17 00:00:00 2001 From: rainmakerv2 <30595646+rainmakerv3@users.noreply.github.com> Date: Tue, 2 Sep 2025 02:08:17 +0800 Subject: [PATCH] Qt: prevent saving/canceling for remapping/hotkeys dialogs while waiting for inputs (#3499) * prevent saving/canceling dialog while mapping mode is enabled * do not disable cancel button * diable defaults button --- src/qt_gui/control_settings.cpp | 8 ++++++++ src/qt_gui/hotkeys.cpp | 6 ++++++ src/qt_gui/kbm_gui.cpp | 8 ++++++++ 3 files changed, 22 insertions(+) diff --git a/src/qt_gui/control_settings.cpp b/src/qt_gui/control_settings.cpp index 5c4387628..d7a673131 100644 --- a/src/qt_gui/control_settings.cpp +++ b/src/qt_gui/control_settings.cpp @@ -756,6 +756,10 @@ void ControlSettings::DisableMappingButtons() { for (const auto& i : AxisList) { i->setEnabled(false); } + + ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(false); + ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(false); } void ControlSettings::EnableMappingButtons() { @@ -766,6 +770,10 @@ void ControlSettings::EnableMappingButtons() { for (const auto& i : AxisList) { i->setEnabled(true); } + + ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(true); + ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true); + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(true); } void ControlSettings::ConnectAxisInputs(QPushButton*& button) { diff --git a/src/qt_gui/hotkeys.cpp b/src/qt_gui/hotkeys.cpp index d49a9befc..9f3ad607a 100644 --- a/src/qt_gui/hotkeys.cpp +++ b/src/qt_gui/hotkeys.cpp @@ -70,12 +70,18 @@ void hotkeys::DisableMappingButtons() { for (const auto& i : ButtonsList) { i->setEnabled(false); } + + ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(false); + ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); } void hotkeys::EnableMappingButtons() { for (const auto& i : ButtonsList) { i->setEnabled(true); } + + ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(true); + ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true); } void hotkeys::SaveHotkeys(bool CloseOnSave) { diff --git a/src/qt_gui/kbm_gui.cpp b/src/qt_gui/kbm_gui.cpp index f38166c4d..1e56c61c0 100644 --- a/src/qt_gui/kbm_gui.cpp +++ b/src/qt_gui/kbm_gui.cpp @@ -162,12 +162,20 @@ void KBMSettings::DisableMappingButtons() { for (const auto& i : ButtonsList) { i->setEnabled(false); } + + ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(false); + ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(false); } void KBMSettings::EnableMappingButtons() { for (const auto& i : ButtonsList) { i->setEnabled(true); } + + ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(true); + ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true); + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(true); } void KBMSettings::SaveKBMConfig(bool close_on_save) {