← All repositories

listless

A simple list app for Apple platforms

git clone https://code.inqk.net/listless.git


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)