fix: restore main content global track updates after refactor

This commit is contained in:
Xiaohan-Tian
2026-05-25 15:41:00 -07:00
parent 3f96b13d8a
commit 742b2fecf3
3 changed files with 38 additions and 49 deletions
+13 -9
View File
@@ -122,6 +122,9 @@ const MainContent: React.FC<MainContentProps> = ({
editingRegionIds: mainContentGlobalTracks.editingRegionIds,
findProjectRegionById: mainContentRegions.selection.findProjectRegionById,
});
const deleteSelectedRegularRegions = mainContentRegions.deleteSelectedRegions;
const deleteSelectedGlobalRegions = mainContentGlobalTracks.deleteSelectedGlobalRegions;
const isGlobalRegionId = mainContentRegions.selection.isGlobalRegionId;
const deleteSelectedTrackAutomationPoints = useCallback((): boolean => {
if (!activeTrackAutomationTrackId || !activeTrackAutomationType || selectedTrackAutomationPointIds.length === 0) {
@@ -159,22 +162,22 @@ const MainContent: React.FC<MainContentProps> = ({
useEffect(() => {
regionDeleteManager.registerDeleteCallback(() => {
if (mainContentGlobalTracks.deleteSelectedGlobalRegions()) {
if (deleteSelectedGlobalRegions()) {
return true;
}
if (deleteSelectedTrackAutomationPoints()) {
return true;
}
return mainContentRegions.deleteSelectedRegions();
return deleteSelectedRegularRegions();
});
return () => {
regionDeleteManager.unregisterDeleteCallback();
};
}, [
deleteSelectedGlobalRegions,
deleteSelectedRegularRegions,
deleteSelectedTrackAutomationPoints,
mainContentGlobalTracks,
mainContentRegions,
]);
useEffect(() => {
@@ -192,12 +195,12 @@ const MainContent: React.FC<MainContentProps> = ({
if (event.key === 'Backspace' || event.key === 'Delete') {
const isInPianoRoll = document.querySelector('.piano-roll')?.contains(event.target as Node);
const hasSelectedGlobalRegions = selectedRegionIds.some(mainContentRegions.selection.isGlobalRegionId);
const hasSelectedGlobalRegions = selectedRegionIds.some(isGlobalRegionId);
if (!isInPianoRoll && (!showPianoRoll || hasSelectedGlobalRegions)) {
const deleted = mainContentGlobalTracks.deleteSelectedGlobalRegions()
const deleted = deleteSelectedGlobalRegions()
|| deleteSelectedTrackAutomationPoints()
|| mainContentRegions.deleteSelectedRegions();
|| deleteSelectedRegularRegions();
if (deleted) {
event.preventDefault();
}
@@ -208,9 +211,10 @@ const MainContent: React.FC<MainContentProps> = ({
window.addEventListener('keydown', handleKeyDown);
return () => window.removeEventListener('keydown', handleKeyDown);
}, [
deleteSelectedGlobalRegions,
deleteSelectedRegularRegions,
deleteSelectedTrackAutomationPoints,
mainContentGlobalTracks,
mainContentRegions,
isGlobalRegionId,
selectedRegionIds,
showPianoRoll,
]);
+10 -4
View File
@@ -9,6 +9,7 @@ import type { RegionClickOptions, RegionPreviewContentStyle, RegionUI, ResizeAct
import { REGION_CONSTANTS, DEBUG_MODE } from '../../constants';
import { KGMainContentState } from '../../core/state/KGMainContentState';
import { useProjectStore } from '../../stores/projectStore';
import { isModifierKeyPressed } from '../../util/osUtil';
interface RegionResizePreviewBaseline {
regionId: string;
@@ -201,21 +202,26 @@ const TrackGridItem: React.FC<TrackGridItemProps> = ({
// Track tool state for cursor feedback.
useEffect(() => {
const syncCursorState = () => {
const syncCursorState = (event?: KeyboardEvent | MouseEvent) => {
const isPencilMode = KGMainContentState.instance().getActiveTool() === 'pencil';
const hasModifierPressed = event ? isModifierKeyPressed(event) : false;
setIsModifierPressed(isPencilMode || hasModifierPressed);
};
const syncCursorStateFromFocus = () => {
setIsModifierPressed(KGMainContentState.instance().getActiveTool() === 'pencil');
};
// Add global event listeners
window.addEventListener('keydown', syncCursorState);
window.addEventListener('keyup', syncCursorState);
window.addEventListener('focus', syncCursorState);
syncCursorState();
window.addEventListener('focus', syncCursorStateFromFocus);
syncCursorStateFromFocus();
// Cleanup listeners on unmount
return () => {
window.removeEventListener('keydown', syncCursorState);
window.removeEventListener('keyup', syncCursorState);
window.removeEventListener('focus', syncCursorState);
window.removeEventListener('focus', syncCursorStateFromFocus);
};
}, []);