commit 463dfb7e30f741b194661aa5e6d4147cc64cefcb
parent 81980ccc5bf8a912344dbe7330a505953af98231
Author: Michael Camilleri <[email protected]>
Date: Tue, 31 Mar 2026 18:12:49 +0900
Disable pull-to-create gesture while editing a row
This addresses an issue raised during the beta testing where it was
possible to use the pull-to-create gesture while a row was being added.
This can be disruptive and is presumably not something a user would
intend to do.
Co-Authored-By: Claude 4.6 Opus <[email protected]>
Diffstat:
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/ListlessiOS/Extensions/ItemListView+PullGestures.swift b/ListlessiOS/Extensions/ItemListView+PullGestures.swift
@@ -69,7 +69,7 @@ private struct PullGesturesModifier: ViewModifier {
@AppStorage("hapticsEnabled") private var hapticsEnabled = true
@State private var isScrollInteracting = false
- let isDraftOpen: Bool
+ let isEditing: Bool
let hasCompletedItems: Bool
let pullCreateThreshold: CGFloat
let flickThreshold: CGFloat
@@ -82,7 +82,7 @@ private struct PullGesturesModifier: ViewModifier {
.onScrollGeometryChange(for: CGFloat.self) { geo in
max(0, -(geo.contentOffset.y + geo.contentInsets.top))
} action: { _, pullDistance in
- if isDraftOpen {
+ if isEditing {
pullToCreate.updatePullDistance(0)
} else {
pullToCreate.updatePullDistance(pullDistance)
@@ -113,7 +113,7 @@ private struct PullGesturesModifier: ViewModifier {
}
.sensoryFeedback(
.impact(weight: .light),
- trigger: hapticsEnabled && !isDraftOpen && pullToCreate.pullOffset >= pullCreateThreshold
+ trigger: hapticsEnabled && !isEditing && pullToCreate.pullOffset >= pullCreateThreshold
) { old, new in
!old && new
}
@@ -123,7 +123,7 @@ private struct PullGesturesModifier: ViewModifier {
}
private func handlePullToCreateScrollPhaseChange(from oldPhase: ScrollPhase, to newPhase: ScrollPhase) {
- guard !isDraftOpen else { return }
+ guard !isEditing else { return }
let action = pullToCreate.handlePhaseChange(
from: oldPhase,
to: newPhase,
@@ -163,7 +163,7 @@ extension View {
func pullGestures(
pullToCreate: Binding<ItemListView.PullToCreateState>,
pullUpOffset: Binding<CGFloat>,
- isDraftOpen: Bool,
+ isEditing: Bool,
hasCompletedItems: Bool,
pullCreateThreshold: CGFloat,
flickThreshold: CGFloat,
@@ -175,7 +175,7 @@ extension View {
PullGesturesModifier(
pullToCreate: pullToCreate,
pullUpOffset: pullUpOffset,
- isDraftOpen: isDraftOpen,
+ isEditing: isEditing,
hasCompletedItems: hasCompletedItems,
pullCreateThreshold: pullCreateThreshold,
flickThreshold: flickThreshold,
diff --git a/ListlessiOS/Views/ItemListView.swift b/ListlessiOS/Views/ItemListView.swift
@@ -624,7 +624,7 @@ struct ItemListView: View, ItemListViewProtocol {
.pullGestures(
pullToCreate: $pState.pullToCreate,
pullUpOffset: $pState.pullUpOffset,
- isDraftOpen: draftPlacement != nil,
+ isEditing: focusedField != nil && focusedField != .scrollView,
hasCompletedItems: !completedItems.isEmpty,
pullCreateThreshold: pullCreateThreshold,
flickThreshold: flickThreshold,