7a580e8941
Not when logging off or when the machine's shutting down Signed-off-by: Roopesh Chander <roop@roopc.net>
49 lines
1.7 KiB
Swift
49 lines
1.7 KiB
Swift
// SPDX-License-Identifier: MIT
|
|
// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
|
|
|
|
import Cocoa
|
|
|
|
class Application: NSApplication {
|
|
|
|
private let characterKeyCommands = [
|
|
"x": #selector(NSText.cut(_:)),
|
|
"c": #selector(NSText.copy(_:)),
|
|
"v": #selector(NSText.paste(_:)),
|
|
"z": #selector(UndoActionRespondable.undo(_:)),
|
|
"a": #selector(NSResponder.selectAll(_:)),
|
|
"Z": #selector(UndoActionRespondable.redo(_:)),
|
|
"w": #selector(NSWindow.performClose(_:)),
|
|
"m": #selector(NSWindow.performMiniaturize(_:)),
|
|
"q": #selector(AppDelegate.quit)
|
|
]
|
|
|
|
private var appDelegate: AppDelegate? //swiftlint:disable:this weak_delegate
|
|
|
|
override init() {
|
|
super.init()
|
|
appDelegate = AppDelegate() // Keep a strong reference to the app delegate
|
|
delegate = appDelegate // Set delegate before app.run() gets called in NSApplicationMain()
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func sendEvent(_ event: NSEvent) {
|
|
let modifierFlags = event.modifierFlags.rawValue & NSEvent.ModifierFlags.deviceIndependentFlagsMask.rawValue
|
|
|
|
if event.type == .keyDown,
|
|
(modifierFlags == NSEvent.ModifierFlags.command.rawValue || modifierFlags == NSEvent.ModifierFlags.command.rawValue | NSEvent.ModifierFlags.shift.rawValue),
|
|
let selector = characterKeyCommands[event.charactersIgnoringModifiers ?? ""] {
|
|
sendAction(selector, to: nil, from: self)
|
|
} else {
|
|
super.sendEvent(event)
|
|
}
|
|
}
|
|
}
|
|
|
|
@objc protocol UndoActionRespondable {
|
|
func undo(_ sender: AnyObject)
|
|
func redo(_ sender: AnyObject)
|
|
}
|