mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2024-12-25 01:01:21 +01:00
44 lines
1.1 KiB
Swift
44 lines
1.1 KiB
Swift
//
|
||
// TimelineKeyboardDelegate.swift
|
||
// NetNewsWire
|
||
//
|
||
// Created by Brent Simmons on 12/19/17.
|
||
// Copyright © 2017 Ranchero Software. All rights reserved.
|
||
//
|
||
|
||
import AppKit
|
||
import AppKitExtras
|
||
|
||
// Doesn’t have any shortcuts of its own — they’re all in MainWindowKeyboardHandler.
|
||
|
||
@objc @MainActor final class TimelineKeyboardDelegate: NSObject, KeyboardDelegate {
|
||
|
||
@IBOutlet weak var timelineViewController: TimelineViewController?
|
||
let shortcuts: Set<KeyboardShortcut>
|
||
|
||
override init() {
|
||
|
||
let f = Bundle.main.path(forResource: "TimelineKeyboardShortcuts", ofType: "plist")!
|
||
let rawShortcuts = NSArray(contentsOfFile: f)! as! [[String: Any]]
|
||
|
||
self.shortcuts = Set(rawShortcuts.compactMap { KeyboardShortcut(dictionary: $0) })
|
||
|
||
super.init()
|
||
}
|
||
|
||
func keydown(_ event: NSEvent, in view: NSView) -> Bool {
|
||
|
||
if MainWindowKeyboardHandler.shared.keydown(event, in: view) {
|
||
return true
|
||
}
|
||
|
||
let key = KeyboardKey(with: event)
|
||
guard let matchingShortcut = KeyboardShortcut.findMatchingShortcut(in: shortcuts, key: key) else {
|
||
return false
|
||
}
|
||
|
||
matchingShortcut.perform(with: view)
|
||
return true
|
||
}
|
||
}
|