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
|
// 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) {
|
override func keyDown(with event: NSEvent) {
|
||||||
guard let h = viewportHandle else { return }
|
guard let h = viewportHandle else { return }
|
||||||
let text = event.characters ?? ""
|
let text = event.characters ?? ""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue