Differentiate between navigation keys and other keys-that-are-handled in keyDown.

This commit is contained in:
Brent Simmons 2017-10-21 12:13:20 -07:00
parent c08a78299a
commit e0f872a8c7

View File

@ -11,6 +11,8 @@ import RSCore
class SidebarOutlineView : NSOutlineView { class SidebarOutlineView : NSOutlineView {
weak var sidebarViewController: SidebarViewController?
//MARK: NSResponder //MARK: NSResponder
override func keyDown(with event: NSEvent) { override func keyDown(with event: NSEvent) {
@ -26,27 +28,31 @@ class SidebarOutlineView : NSOutlineView {
return return
} }
var isNavigationKey = false
var keyHandled = false var keyHandled = false
switch(ch) { switch(ch) {
case NSRightArrowFunctionKey: case NSRightArrowFunctionKey:
isNavigationKey = true
keyHandled = true keyHandled = true
case NSDeleteFunctionKey, Int(kDeleteKeyCode): case NSDeleteFunctionKey, Int(kDeleteKeyCode):
keyHandled = true keyHandled = true
Swift.print("NSDeleteFunctionKey") sidebarViewController?.delete(event)
default: default:
keyHandled = false keyHandled = false
} }
if keyHandled { if isNavigationKey {
let appInfo = AppInfo() let appInfo = AppInfo()
appInfo.navigationKey = ch appInfo.navigationKey = ch
NotificationCenter.default.post(name: .AppNavigationKeyPressed, object: self, userInfo: appInfo.userInfo) NotificationCenter.default.post(name: .AppNavigationKeyPressed, object: self, userInfo: appInfo.userInfo)
return
} }
else {
if !keyHandled {
super.keyDown(with: event) super.keyDown(with: event)
} }
} }