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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user