Drag & drop reordering: playlist tracks and timed-scene elements

Playlist reordering existed but was broken whenever a track was playing:
the ~400ms progress re-render replaced the dragged node and cancelled the
browser drag instantly. renderPlaylist now defers rebuilds until dragend,
drops show an insertion marker (top half = before, bottom half = after),
and internal drags no longer trigger the file-drop overlay.

Scene editor: elements get a drag grip; since the list is always shown
time-sorted, dropping an element between two others moves its appearance
time between theirs (before the first = half its time, after the last =
+5s). Grip-armed dragging keeps the sliders inside the cards working.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
lucianoandClaude Fable 5 committed 2026-07-30 17:51:15 +02:00
1 parent 529cfcb9d8
commit 1c9bdd1d3c
2 files changed
+115 -5

No files matched your search

+8
View File
@@ -364,6 +364,14 @@ textarea.textarea-lg {
border-color: rgba(120,170,255,0.6);
}
.track.dragging { opacity: 0.4; }
.track.drop-above { box-shadow: inset 0 3px 0 0 rgba(120,170,255,0.9); }
.track.drop-below { box-shadow: inset 0 -3px 0 0 rgba(120,170,255,0.9); }
/* Scene-editor element reordering */
.cue-grip { cursor: grab; opacity: 0.45; font-size: 13px; }
.cue.dragging { opacity: 0.4; }
.cue.drop-above { box-shadow: inset 0 3px 0 0 rgba(120,170,255,0.9); }
.cue.drop-below { box-shadow: inset 0 -3px 0 0 rgba(120,170,255,0.9); }
.track .grip { cursor: grab; opacity: 0.4; font-size: 14px; }
.track .tname {
flex: 1;