fix: use original baseTrackId for crossOffset, never update drag.trackId
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user