feat: open providers with Command-P and dismiss pickers with Escape
This commit is contained in:
@@ -97,6 +97,7 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
}
|
||||
window.usesTextNavigation = { [weak self] in self?.notes != nil }
|
||||
window.dismiss = { [weak self] in self?.dismiss() }
|
||||
window.escape = { [weak self] in self?.handleEscape() }
|
||||
window.canUseNumberShortcuts = { [weak self] in
|
||||
guard let self else { return false }
|
||||
return !self.isLaunching && self.calculation == nil && self.resultCount > 0
|
||||
@@ -115,8 +116,7 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
actions.closed = { [weak self] in
|
||||
guard let self else { return }
|
||||
self.openButton.keyEquivalent = "\r"
|
||||
if NSApp.isActive { self.window?.makeFirstResponder(self.searchField) }
|
||||
else { self.dismiss(restoringFocus: false) }
|
||||
self.window?.makeFirstResponder(self.searchField)
|
||||
}
|
||||
currency.changed = { [weak self] in self?.updateResults(preservingSelection: true) }
|
||||
restorePosition()
|
||||
@@ -494,9 +494,15 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
updateResults()
|
||||
}
|
||||
|
||||
private func handleEscape() {
|
||||
let selector = #selector(NSResponder.cancelOperation(_:))
|
||||
if actions.handle(selector) || translation?.handle(selector) == true || emojiPicker?.handle(selector) == true { return }
|
||||
dismiss()
|
||||
}
|
||||
|
||||
func control(_ control: NSControl, textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {
|
||||
if commandSelector == #selector(NSResponder.cancelOperation(_:)) {
|
||||
dismiss()
|
||||
handleEscape()
|
||||
return true
|
||||
}
|
||||
if let emojiPicker { return emojiPicker.handle(commandSelector) }
|
||||
@@ -1163,6 +1169,7 @@ final class LauncherPanel: NSPanel {
|
||||
override var canBecomeMain: Bool { true }
|
||||
var navigateSelection: ((Int) -> Void)?
|
||||
var dismiss: (() -> Void)?
|
||||
var escape: (() -> Void)?
|
||||
var dragEnded: (() -> Void)?
|
||||
var canUseNumberShortcuts: (() -> Bool)?
|
||||
var numberHintsChanged: (() -> Void)?
|
||||
@@ -1293,7 +1300,7 @@ final class LauncherPanel: NSPanel {
|
||||
}
|
||||
|
||||
override func cancelOperation(_ sender: Any?) {
|
||||
dismiss?()
|
||||
if let escape { escape() } else { dismiss?() }
|
||||
}
|
||||
|
||||
override func performClose(_ sender: Any?) {
|
||||
|
||||
Reference in New Issue
Block a user