fix: allow edit shortcuts in the search bar (closes #5308)

This commit is contained in:
lwouis committed 2026-03-10 21:33:46 +01:00
1 parent fd4e3734e8
commit 35ddbe72ed
3 files changed
+19 -3

No files matched your search

+15 -3
View File
@@ -1,6 +1,7 @@
class MainMenu {
private static var mainMenu: NSMenu!
private static var menuItemsWithShortcut = [NSMenuItem: String]()
private static var editMenuItems = Set<NSMenuItem>()
/// classic keyboard shortcuts like copy-and-paste are missing without a MainMenu. We generated the default menu from XCode and load it
/// see https://stackoverflow.com/a/3746058/2249756
@@ -18,15 +19,26 @@ class MainMenu {
}
}
static func toggleEditMenu(_ enabled: Bool) {
for item in editMenuItems {
guard let keyEquivalent = menuItemsWithShortcut[item] else { continue }
item.keyEquivalent = enabled ? keyEquivalent : ""
}
}
private static func rememberMenuItemsWithShortcut() {
var stack: [NSMenu] = [mainMenu]
while let menu = stack.popLast() {
guard let items = mainMenu?.items else { return }
let editSubmenu = items.first { $0.submenu?.title == "Edit" }?.submenu
var stack: [(NSMenu, Bool)] = [(mainMenu, false)]
while let (menu, isEdit) = stack.popLast() {
let isEditMenu = isEdit || menu === editSubmenu
for item in menu.items {
if !item.keyEquivalent.isEmpty {
menuItemsWithShortcut[item] = item.keyEquivalent
if isEditMenu { editMenuItems.insert(item) }
}
if let submenu = item.submenu {
stack.append(submenu)
stack.append((submenu, isEditMenu))
}
}
}
+3
View File
@@ -128,6 +128,9 @@ extension TilesPanel: NSWindowDelegate {
// this avoids command+q from quitting AltTab itself, or command+p from printing
DispatchQueue.main.async {
MainMenu.toggle(false)
if TilesView.isSearchEditing {
MainMenu.toggleEditMenu(true)
}
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
Applications.manuallyRefreshAllWindows()
+1
View File
@@ -198,6 +198,7 @@ class TilesView {
let editable = searchMode == .editing
searchField.isEditable = editable
searchField.isSelectable = editable
MainMenu.toggleEditMenu(editable)
}
static func updateCachedSizes() {