fix: use original baseTrackId for crossOffset, never update drag.trackId

This commit is contained in:
2026-07-29 11:10:59 +07:00
parent 0d763c5a0b
commit e40fdf15ad
3 changed files with 13 additions and 6 deletions
+4 -4
View File
@@ -12061,9 +12061,11 @@ const App = () => {
}
if (targetIdx < 0) targetIdx = mouseY < trackTop ? 0 : Math.max(0, allTrks.length - 1);
var targetTrackId = allTrks[targetIdx] ? allTrks[targetIdx].id : drag.trackId;
// Use ORIGINAL trackId (never changes during drag) for crossOffset math
var dragBaseTrackId = drag.multiIds && drag.multiIds[drag.itemId] ? drag.multiIds[drag.itemId].trackId : drag.trackId;
updateActiveTracks(prev => {
var trkIds = prev.map(function(tr) { return tr.id; });
var baseIdx = trkIds.indexOf(drag.trackId);
var baseIdx = trkIds.indexOf(dragBaseTrackId);
if (baseIdx < 0) baseIdx = 0;
var tIdx = trkIds.indexOf(targetTrackId);
if (tIdx < 0) tIdx = prev.length - 1;
@@ -12155,9 +12157,7 @@ const App = () => {
return drag.itemType === 'section' ? { ...tr, sections: its } : { ...tr, midiItems: its };
});
});
if (drag.trackId !== targetTrackId) {
setDraggedSectionItem(function(p) { return { ...p, trackId: targetTrackId }; });
}
};
const handleMouseUp = () => {
const drag = draggedSectionItemRef.current;