fix: skip st.notes sync when draggedNote active (prevents brush flicker)

This commit is contained in:
2026-07-25 20:45:24 +07:00
parent ce319573ab
commit f2d02a358f
2 changed files with 5 additions and 3 deletions
+3 -1
View File
@@ -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(() => {