fix: restore main content global track updates after refactor
This commit is contained in:
@@ -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,
|
||||
]);
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
}, []);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user