fix: no-op unknown removal, earlier-duplicate editor check, list focus for delete/undo

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 15:53:15 +02:00
co-authored by Claude Sonnet 5.5
parent 9a5794c1e0
commit d34d3e92da
4 changed files with 44 additions and 3 deletions
+14 -2
View File
@@ -21,6 +21,7 @@ struct DictionaryView: View {
@State private var selection: UUID?
@State private var editing: EditorTarget?
@FocusState private var searchFocused: Bool
@FocusState private var listFocused: Bool
var body: some View {
VStack(spacing: Layout.panelGap) {
@@ -77,14 +78,25 @@ struct DictionaryView: View {
ForEach(list.visibleRows) { row in
DictionaryRow(row: row, isSelected: selection == row.id)
.onTapGesture(count: 2) { editing = .existing(row.id) }
.onTapGesture { selection = row.id }
.onTapGesture {
selection = row.id
listFocused = true
}
}
}
}
}
.focusable()
.focused($listFocused)
.focusEffectDisabled()
.onDeleteCommand {
if let id = selection { list.remove(id: id) }
if let id = selection {
list.remove(id: id)
selection = nil
}
}
.onChange(of: list.rows) { _, rows in
if let s = selection, !rows.contains(where: { $0.id == s }) { selection = nil }
}
.onKeyPress(KeyEquivalent("z"), phases: .down) { press in
guard press.modifiers == .command, list.canUndo else { return .ignored }
+4
View File
@@ -10,6 +10,7 @@ struct HistoryView: View {
@EnvironmentObject private var model: AppModel
@ObservedObject var list: HistoryViewModel
@FocusState private var searchFocused: Bool
@FocusState private var listFocused: Bool
var body: some View {
VStack(spacing: Layout.panelGap) {
@@ -47,6 +48,9 @@ struct HistoryView: View {
}
}
.focusable()
.focused($listFocused)
.focusEffectDisabled()
.onChange(of: list.selection) { _, _ in listFocused = true }
.onDeleteCommand {
if let id = list.selection { list.delete(id: id) }
}