76 lines
1.5 KiB
Swift
76 lines
1.5 KiB
Swift
//
|
|
// SidebarOutlineView.swift
|
|
// Evergreen
|
|
//
|
|
// Created by Brent Simmons on 11/17/15.
|
|
// Copyright © 2015 Ranchero Software, LLC. All rights reserved.
|
|
//
|
|
|
|
import AppKit
|
|
import RSCore
|
|
|
|
class SidebarOutlineView : NSOutlineView {
|
|
|
|
weak var sidebarViewController: SidebarViewController?
|
|
|
|
//MARK: NSResponder
|
|
|
|
override func keyDown(with event: NSEvent) {
|
|
|
|
guard !event.rs_keyIsModified() else {
|
|
super.keyDown(with: event)
|
|
return
|
|
}
|
|
|
|
let ch = Int(event.rs_unmodifiedCharacter())
|
|
if ch == NSNotFound {
|
|
super.keyDown(with: event)
|
|
return
|
|
}
|
|
|
|
var isNavigationKey = false
|
|
var keyHandled = false
|
|
|
|
switch(ch) {
|
|
|
|
case NSRightArrowFunctionKey:
|
|
isNavigationKey = true
|
|
keyHandled = true
|
|
|
|
case NSDeleteFunctionKey, Int(kDeleteKeyCode):
|
|
keyHandled = true
|
|
sidebarViewController?.delete(event)
|
|
|
|
default:
|
|
keyHandled = false
|
|
}
|
|
|
|
if isNavigationKey {
|
|
let appInfo = AppInfo()
|
|
appInfo.navigationKey = ch
|
|
NotificationCenter.default.post(name: .AppNavigationKeyPressed, object: self, userInfo: appInfo.userInfo)
|
|
return
|
|
}
|
|
|
|
if !keyHandled {
|
|
super.keyDown(with: event)
|
|
}
|
|
}
|
|
|
|
override func viewWillStartLiveResize() {
|
|
|
|
if let scrollView = self.enclosingScrollView {
|
|
scrollView.hasVerticalScroller = false
|
|
}
|
|
super.viewWillStartLiveResize()
|
|
}
|
|
|
|
override func viewDidEndLiveResize() {
|
|
|
|
if let scrollView = self.enclosingScrollView {
|
|
scrollView.hasVerticalScroller = true
|
|
}
|
|
super.viewDidEndLiveResize()
|
|
}
|
|
}
|