listless

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

commit edfd371e7063944c5f2725428ab88bddbd6bca1f
parent 5c894793c625f5caaa608ae3db3162c9b676e953
Author: Michael Camilleri <[email protected]>
Date:   Tue, 24 Mar 2026 04:20:20 +0900

Make further fixes to pull-to-create animation

Diffstat:
MListlessiOS/Extensions/TaskListView+PullGestures.swift | 2+-
MListlessiOS/Extensions/TaskListView+PullToCreate.swift | 2+-
MListlessiOS/Views/TaskListView.swift | 7+++----
3 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/ListlessiOS/Extensions/TaskListView+PullGestures.swift b/ListlessiOS/Extensions/TaskListView+PullGestures.swift @@ -136,7 +136,7 @@ private struct PullGesturesModifier: ViewModifier { _ = onCreateTaskAtTop() } case .collapseIndicator: - withAnimation(.spring(response: 0.22, dampingFraction: 0.95)) { + withAnimation(.spring(response: 0.22, dampingFraction: 1.0)) { pullToCreate.indicatorOffset = 0 } case .none: diff --git a/ListlessiOS/Extensions/TaskListView+PullToCreate.swift b/ListlessiOS/Extensions/TaskListView+PullToCreate.swift @@ -15,7 +15,7 @@ extension TaskListView { draftTitle = "" pState.frozenOffset = -min(pState.pullToCreate.pullOffset, maxOffset) draftPlacement = .prepend - DispatchQueue.main.async { + Task { @MainActor in pState.frozenOffset = 0 } fState.selectedTaskID = taskID diff --git a/ListlessiOS/Views/TaskListView.swift b/ListlessiOS/Views/TaskListView.swift @@ -199,7 +199,7 @@ struct TaskListView: View, TaskListViewProtocol { } if placement == .prepend, !hasTitle { - withAnimation(.spring(response: 0.24, dampingFraction: 0.95)) { + withAnimation(.spring(response: 0.24, dampingFraction: 1.0)) { clear() } } else if placement == .prepend { @@ -258,8 +258,7 @@ struct TaskListView: View, TaskListViewProtocol { : min(pullOffset, indicatorHeight + rowGap), alignment: .top ) - .clipped() - .opacity(isPrependDraftVisible ? 0 : 1) + .opacity(isPrependDraftVisible || pullOffset <= 0 ? 0 : 1) } /// The draft row content styled to match a task row. Controlled by the @@ -487,7 +486,7 @@ struct TaskListView: View, TaskListViewProtocol { ) ) .animation( - .spring(response: 0.28, dampingFraction: 0.9), + .spring(response: 0.28, dampingFraction: 1.0), value: pState.frozenOffset ) .frame(maxWidth: .infinity, alignment: .topLeading)