From 65227f8bb359b7738e16948fe3f30f2565dac692 Mon Sep 17 00:00:00 2001 From: rainmakerv2 <30595646+rainmakerv3@users.noreply.github.com> Date: Sat, 14 Jun 2025 23:05:50 +0800 Subject: [PATCH] If duplicate unique inputs found, show which buttons have duplicates --- src/qt_gui/kbm_gui.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/qt_gui/kbm_gui.cpp b/src/qt_gui/kbm_gui.cpp index 15e9008ab..65a3852b9 100644 --- a/src/qt_gui/kbm_gui.cpp +++ b/src/qt_gui/kbm_gui.cpp @@ -372,14 +372,32 @@ void KBMSettings::SaveKBMConfig(bool CloseOnSave) { file.close(); // Prevent duplicate inputs for KBM as this breaks the engine + bool duplicateFound = false; + QSet duplicateInputs; for (auto it = inputs.begin(); it != inputs.end(); ++it) { if (std::find(it + 1, inputs.end(), *it) != inputs.end()) { - QMessageBox::information(this, tr("Unable to Save"), - tr("Cannot bind any unique input more than once")); - return; + duplicateFound = true; + duplicateInputs.insert(QString::fromStdString(*it)); } } + if (duplicateFound) { + QStringList DuplicateButtons; + for (QString i : duplicateInputs) { + for (const auto& j : ButtonsList) { + if (j->text() == i) + DuplicateButtons.append(j->objectName() + " - " + i); + } + } + QString DuplicateList = DuplicateButtons.join("\n"); + QMessageBox::information( + this, tr("Unable to Save"), + QString(tr("Cannot bind any unique input more than once. " + "Duplicate inputs mapped to the following buttons:\n\n%1") + .arg(DuplicateList))); + return; + } + std::vector save; bool CurrentLineEmpty = false, LastLineEmpty = false; for (auto const& line : lines) {