restrict performKeyEquivalent to editor-handled shortcuts only, restore system menu items
This commit is contained in:
parent
e04e5b1953
commit
50fcb9224a
|
|
@ -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 ?? ""
|
||||
|
|
|
|||
Loading…
Reference in New Issue