From 561541e7b46a6aa52ca8570b2cc32db19b0d64e6 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 28 May 2026 18:48:35 +0800
Subject: [PATCH] Consolidate app grid interaction state
---
Apptag/QuickSearch.swift | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/Apptag/QuickSearch.swift b/Apptag/QuickSearch.swift
index d53f79d..140861f 100644
--- a/Apptag/QuickSearch.swift
+++ b/Apptag/QuickSearch.swift
@@ -965,6 +965,7 @@
field.placeholderString = placeholder
field.delegate = context.coordinator
field.onCommand = onCommand
+ context.coordinator.onCommand = onCommand
field.setAccessibilityLabel(tr("quickSearch.inputAccessibility"))
context.coordinator.field = field
requestFocus(field)
@@ -977,6 +978,7 @@
}
field.placeholderString = placeholder
field.onCommand = onCommand
+ context.coordinator.onCommand = onCommand
if context.coordinator.lastFocusToken != focusToken {
context.coordinator.lastFocusToken = focusToken
requestFocus(field)
@@ -999,6 +1001,7 @@
final class Coordinator: NSObject, NSTextFieldDelegate {
var text: Binding<String>
var lastFocusToken = 0
+ var onCommand: ((QuickSearchCommand) -> Void)?
weak var field: NSTextField?
init(text: Binding<String>) {
@@ -1009,6 +1012,28 @@
guard let field = obj.object as? NSTextField else { return }
text.wrappedValue = field.stringValue
}
+
+ func control(_ control: NSControl, textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {
+ switch commandSelector {
+ case #selector(NSResponder.moveUp(_:)):
+ onCommand?(.moveUp)
+ return true
+ case #selector(NSResponder.moveDown(_:)):
+ onCommand?(.moveDown)
+ return true
+ case #selector(NSResponder.insertNewline(_:)):
+ onCommand?(.submit)
+ return true
+ case #selector(NSResponder.insertNewlineIgnoringFieldEditor(_:)):
+ onCommand?(.submit)
+ return true
+ case #selector(NSResponder.cancelOperation(_:)):
+ onCommand?(.dismiss)
+ return true
+ default:
+ return false
+ }
+ }
}
}
--
Gitblit v1.9.3