diff --git a/src/runner/hotkey_conflict_detector.cpp b/src/runner/hotkey_conflict_detector.cpp index 6b938411ca..a5fe03257e 100644 --- a/src/runner/hotkey_conflict_detector.cpp +++ b/src/runner/hotkey_conflict_detector.cpp @@ -271,6 +271,8 @@ namespace HotkeyConflictDetector for (auto it = inAppConflictHotkeyMap.begin(); it != inAppConflictHotkeyMap.end();) { auto& conflictSet = it->second; + uint16_t handle = it->first; + for (auto setIt = conflictSet.begin(); setIt != conflictSet.end();) { if (setIt->moduleName == moduleName) @@ -284,10 +286,18 @@ namespace HotkeyConflictDetector ++setIt; } } + if (conflictSet.empty()) { it = inAppConflictHotkeyMap.erase(it); } + else if (conflictSet.size() == 1) + { + // Move the only remaining conflict to main map + const auto& onlyConflict = *conflictSet.begin(); + hotkeyMap[handle] = onlyConflict; + it = inAppConflictHotkeyMap.erase(it); + } else { ++it;