fix: skip st.notes sync when draggedNote active (prevents brush flicker)
This commit is contained in:
@@ -4572,6 +4572,8 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, onClose, onUpdateNot
|
||||
const noteMaxBeat = (st.notes || []).reduce((max, n) => Math.max(max, (n.start_beat || 0) + (n.duration_beats || 1)), 0);
|
||||
const [selectionMarquee, setSelectionMarquee] = React.useState(null); // { startBeat, startPitch, currentBeat, currentPitch }
|
||||
const [draggedNote, setDraggedNote] = React.useState(null); // { mode: 'move'|'resize', idx, startOffsetBeat, originalStart }
|
||||
const draggedNoteRef = React.useRef(draggedNote);
|
||||
draggedNoteRef.current = draggedNote;
|
||||
const [hoveredResizeIdx, setHoveredResizeIdx] = React.useState(-1);
|
||||
const [rollBeats, setRollBeats] = React.useState(Math.max(noteMaxBeat + 16, 64));
|
||||
const rollBeatsRef = React.useRef(rollBeats);
|
||||
@@ -4585,7 +4587,7 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, onClose, onUpdateNot
|
||||
const [notes, setNotes] = React.useState(st.notes || []);
|
||||
const notesRef = React.useRef(notes);
|
||||
notesRef.current = notes;
|
||||
React.useEffect(() => { setNotes(st.notes || []); }, [st.notes]);
|
||||
React.useEffect(() => { if (!draggedNoteRef.current) setNotes(st.notes || []); }, [st.notes]);
|
||||
const brushVelocityRef = React.useRef(0.8);
|
||||
const [selectedNoteIds, setSelectedNoteIds] = React.useState([]);
|
||||
React.useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user