listless

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

commit 6f5fb8048948fbf4a485decac7561b64ef68ea07
parent cd31a3a748aa27798dc5f006b32c80811769a385
Author: Michael Camilleri <[email protected]>
Date:   Wed, 18 Feb 2026 03:46:08 +0900

Improve drag-and-drop reordering feel

Co-Authored-By: Claude 4.6 Opus <[email protected]>

Diffstat:
MListless/Views/TaskListView.swift | 6+++---
MListlessiOS/Helpers/TaskRowDragGesture.swift | 8++++----
2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/Listless/Views/TaskListView.swift b/Listless/Views/TaskListView.swift @@ -57,10 +57,10 @@ struct TaskListView: View { onStartEdit: { startEditing($0) }, onEndEdit: { endEditing($0, shouldCreateNewTask: $1) } ) - .scaleEffect(draggedTaskID == taskID ? 1.03 : 1.0) + .scaleEffect(draggedTaskID == taskID ? 1.05 : 1.0) .shadow( - color: draggedTaskID == taskID ? .black.opacity(0.15) : .clear, - radius: 8, y: 2 + color: draggedTaskID == taskID ? .black.opacity(0.3) : .clear, + radius: 12, y: 4 ) .zIndex(draggedTaskID == taskID ? 1 : 0) .taskDragGesture( diff --git a/ListlessiOS/Helpers/TaskRowDragGesture.swift b/ListlessiOS/Helpers/TaskRowDragGesture.swift @@ -34,11 +34,11 @@ struct TaskRowDragGesture: ViewModifier { .onChanged { value in switch value { case .second(true, let drag): + // Fire onDragStart as soon as the long press completes so the + // row lifts visually before any finger movement. onDragStart is + // idempotent (guarded in TaskListView). + onDragStart() if let drag { - // onDragStart is idempotent (guarded in TaskListView); - // wait for a real drag value so the overlay has a valid - // position from the very first frame. - onDragStart() onDragChanged(drag.location) } default: