restrict performKeyEquivalent to editor-handled shortcuts only, restore system menu items

This commit is contained in:
jess 2026-04-07 18:19:29 -07:00
parent e04e5b1953
commit 50fcb9224a
1 changed files with 27 additions and 0 deletions

View File

@ -150,6 +150,33 @@ class IcedViewportView: NSView {
// MARK: - Key Events
override func performKeyEquivalent(with event: NSEvent) -> Bool {
guard viewportHandle != nil else { return super.performKeyEquivalent(with: event) }
let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
let cmd = flags.contains(.command)
let shift = flags.contains(.shift)
let chars = event.charactersIgnoringModifiers ?? ""
if cmd && !shift {
switch chars {
case "a", "c", "v", "x", "z", "p",
"=", "+", "-", "0":
keyDown(with: event)
return true
default: break
}
}
if cmd && shift {
switch chars {
case "z":
keyDown(with: event)
return true
default: break
}
}
return super.performKeyEquivalent(with: event)
}
override func keyDown(with event: NSEvent) {
guard let h = viewportHandle else { return }
let text = event.characters ?? ""