listless

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

commit d83145d68778e80469a03b5663bc57f318374477
parent 3a7c2c8ce7c6919f291ef99732ef9c7a79044a83
Author: Michael Camilleri <[email protected]>
Date:   Fri, 27 Feb 2026 23:07:30 +0900

Fix tearing between elements on slide actions

Co-Authored-By: Codex GPT 5.3 <[email protected]>

Diffstat:
MListlessiOS/Helpers/TaskRowSwipeGesture.swift | 1-
MListlessiOS/Views/TaskRowView.swift | 15++++++---------
2 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/ListlessiOS/Helpers/TaskRowSwipeGesture.swift b/ListlessiOS/Helpers/TaskRowSwipeGesture.swift @@ -55,7 +55,6 @@ struct TaskRowSwipeGesture: ViewModifier { // Only the content moves content .offset(x: swipeOffset) - .animation(.spring(response: 0.3, dampingFraction: 0.8), value: swipeOffset) .contentShape(Rectangle()) } .simultaneousGesture( diff --git a/ListlessiOS/Views/TaskRowView.swift b/ListlessiOS/Views/TaskRowView.swift @@ -64,15 +64,12 @@ struct TaskRowView: View { let previewCompleted = isSwipeTriggered && swipeDirection == .right ? !task.isCompleted : task.isCompleted - ZStack { - Image(systemName: "checkmark.circle.fill") - .opacity(previewCompleted ? 1 : 0) - Image(systemName: "circle") - .opacity(previewCompleted ? 0 : 1) - } - .transaction { $0.animation = nil } - .foregroundStyle(Color.secondary) - .font(.system(size: 17)) + Image(systemName: previewCompleted ? "checkmark.circle.fill" : "circle") + .contentTransition(.identity) + .transaction { $0.animation = nil } + .frame(width: 22, height: 22) + .foregroundStyle(Color.secondary) + .font(.system(size: 17)) } .buttonStyle(.borderless)