listless

A simple list app for Apple platforms
Log | Files | Refs | README | LICENSE

commit 6461f078965680b59f9fd7ffba514062116ddad6
parent 59fbebbcd921ecfc3180469d2c97c7fda0596761
Author: Michael Camilleri <[email protected]>
Date:   Sat,  7 Feb 2026 22:40:42 +0900

Add undo

Co-Authored-By: Claude 4.5 Sonnet <[email protected]>

Diffstat:
MListless/Views/TaskListView.swift | 14++++++++++++++
1 file changed, 14 insertions(+), 0 deletions(-)

diff --git a/Listless/Views/TaskListView.swift b/Listless/Views/TaskListView.swift @@ -6,6 +6,9 @@ struct TaskListView: View { case scrollView } + @Environment(\.undoManager) private var undoManager + @Environment(\.managedObjectContext) private var managedObjectContext + @State private var store: TaskStore @FetchRequest( sortDescriptors: [ @@ -155,6 +158,10 @@ struct TaskListView: View { } } } + .onChange(of: undoManager, initial: true) { _, newValue in + // Connect SwiftUI's undo manager to Core Data context for automatic undo/redo + managedObjectContext.undoManager = newValue + } } private var activeTasks: [TaskItem] { @@ -252,7 +259,14 @@ struct TaskListView: View { } let trimmedTitle = task.title.trimmingCharacters(in: .whitespacesAndNewlines) guard trimmedTitle.isEmpty else { return } + + // Remove this task from undo history since it was never really used + managedObjectContext.undoManager?.removeAllActions(withTarget: task) + + // Disable undo registration for the delete operation itself + managedObjectContext.undoManager?.disableUndoRegistration() deleteTask(task) + managedObjectContext.undoManager?.enableUndoRegistration() }