fix: restore default command+tab if shortcut is unbound (closes #4642)

This commit is contained in:
lwouis committed 2025-08-12 16:26:32 +02:00
1 parent a696611615
commit f66c92aefb
1 file changed
+7 -4
@@ -153,8 +153,8 @@ class ControlsTab {
shortcuts[controlId] = atShortcut
if scope == .global {
KeyboardEvents.addGlobalShortcut(controlId, atShortcut.shortcut)
ControlsTab.toggleNativeCommandTabIfNeeded()
}
toggleNativeCommandTabIfNeeded()
}
/// commandTab and commandKeyAboveTab are self-contained in the "nextWindowShortcut" shortcuts
@@ -168,10 +168,10 @@ class ControlsTab {
}
}
private static func toggleNativeCommandTabIfNeeded() {
static func toggleNativeCommandTabIfNeeded() {
let nativeHotkeys: [CGSSymbolicHotKey: (Shortcut) -> Bool] = [
.commandTab: { (shortcut) in shortcut.carbonKeyCode == kVK_Tab && shortcut.carbonModifierFlags == cmdKey },
.commandShiftTab: { (shortcut) in shortcut.carbonKeyCode == kVK_Tab && combinedModifiersMatch(shortcut.carbonModifierFlags, UInt32(cmdKey | shiftKey)) },
.commandTab: { (shortcut) in shortcut.carbonModifierFlags == cmdKey && shortcut.carbonKeyCode == kVK_Tab },
.commandShiftTab: { (shortcut) in combinedModifiersMatch(shortcut.carbonModifierFlags, UInt32(cmdKey | shiftKey)) && shortcut.carbonKeyCode == kVK_Tab },
.commandKeyAboveTab: { (shortcut) in shortcut.carbonModifierFlags == cmdKey && shortcut.carbonKeyCode == kVK_ANSI_Grave },
]
var overlappingHotkeys = shortcuts.values.compactMap { (atShortcut) in nativeHotkeys.first { $1(atShortcut.shortcut) }?.key }
@@ -304,6 +304,9 @@ class ControlsTab {
KeyboardEvents.removeGlobalShortcut(controlId, atShortcut.shortcut)
}
shortcuts.removeValue(forKey: controlId)
if atShortcut.scope == .global {
ControlsTab.toggleNativeCommandTabIfNeeded()
}
}
}