fix: use selectedItemIdsRef in keyboard handler to fix stale closure

Keyboard handler useEffect has empty deps [], so selectedItemIds was
always captured as empty Set. Added selectedItemIdsRef to keep live
reference, matching pattern used by selectedClipIdRef.
This commit is contained in:
2026-07-28 18:35:49 +07:00
parent a41284ccf7
commit 54c1ee9e94
+5 -2
View File
@@ -6958,6 +6958,8 @@ const App = () => {
// BMP for Tempo Track - LOOP_EDITOR_2.md §6
const [selectedTrackId, setSelectedTrackId] = useState('1');
const [selectedItemIds, setSelectedItemIds] = useState(new Set());
const selectedItemIdsRef = useRef(new Set());
selectedItemIdsRef.current = selectedItemIds;
const [currentTime, setCurrentTime] = useState(0);
const [isPlaying, setIsPlaying] = useState(false);
const [selectionStart, setSelectionStart] = useState(null);
@@ -8158,9 +8160,10 @@ const App = () => {
return;
}
if (e.key === 'Delete' || e.key === 'Backspace' || e.key === 'Del') {
if (selectedItemIds && selectedItemIds.size > 0) {
const selItems = selectedItemIdsRef.current;
if (selItems.size > 0) {
e.preventDefault();
const idsToDelete = new Set(selectedItemIds);
const idsToDelete = new Set(selItems);
setSelectedItemIds(new Set());
updateActiveTracks(prev => prev.map(t => {
let changed = false;