feat: open providers with Command-P and dismiss pickers with Escape

This commit is contained in:
2026-10-18 00:34:15 +02:00
parent 86632f1d86
commit f12ef7e7a1
6 changed files with 42 additions and 10 deletions
+11 -4
View File
@@ -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?) {