feat(playlist): drag-and-drop reorder for custom-order tracks

Adds a dedicated drag HANDLE (grip) in the reorder gutter with the queue's drag gesture (6px threshold, absolute-position - root.y correction, three end paths incl. the changed-pressed safety net), so the row-body drag-to-sidebar stays intact. PlaylistView keeps component-local reorder state (slot math folds in the ListView viewport-y), a drop indicator and a floating ghost; commit fires PlaylistActions.reorder-track(from,to). Rust reuses the arbitrary-index persist path (repo::reorder for local, persist_custom for Qobuz) the arrows already back. Edge auto-scroll during drag is a follow-up TODO. Resolves #589.

cc
This commit is contained in:
vicrodh committed 2026-07-12 20:17:12 -06:00
1 parent 02cf9ad011
commit 2103bbd3eb
6 files changed
+462 -35

No files matched your search

+5
View File
@@ -1994,6 +1994,11 @@ export global PlaylistActions {
callback search(string);
// Sort by a field (re-selecting the active field toggles asc/desc).
callback set-sort(string);
// Drag-reorder commit (custom-order list, issue #589): move the row at
// visible index `from` to insertion slot `to` (0..N; slots `from` and
// `from+1` are the no-op gaps and never fire). Complements the
// single-step ("track","move-up"/"move-down") chevron arms.
callback reorder-track(int /* from */, int /* to */);
}
// "Edit playlist" modal state (rename + description + delete).