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:
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)