← All repositories

listless

A simple list app for Apple platforms

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


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: