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
|
// BMP for Tempo Track - LOOP_EDITOR_2.md §6
|
||||||
const [selectedTrackId, setSelectedTrackId] = useState('1');
|
const [selectedTrackId, setSelectedTrackId] = useState('1');
|
||||||
const [selectedItemIds, setSelectedItemIds] = useState(new Set());
|
const [selectedItemIds, setSelectedItemIds] = useState(new Set());
|
||||||
|
const selectedItemIdsRef = useRef(new Set());
|
||||||
|
selectedItemIdsRef.current = selectedItemIds;
|
||||||
const [currentTime, setCurrentTime] = useState(0);
|
const [currentTime, setCurrentTime] = useState(0);
|
||||||
const [isPlaying, setIsPlaying] = useState(false);
|
const [isPlaying, setIsPlaying] = useState(false);
|
||||||
const [selectionStart, setSelectionStart] = useState(null);
|
const [selectionStart, setSelectionStart] = useState(null);
|
||||||
@@ -8158,9 +8160,10 @@ const App = () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (e.key === 'Delete' || e.key === 'Backspace' || e.key === 'Del') {
|
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();
|
e.preventDefault();
|
||||||
const idsToDelete = new Set(selectedItemIds);
|
const idsToDelete = new Set(selItems);
|
||||||
setSelectedItemIds(new Set());
|
setSelectedItemIds(new Set());
|
||||||
updateActiveTracks(prev => prev.map(t => {
|
updateActiveTracks(prev => prev.map(t => {
|
||||||
let changed = false;
|
let changed = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user