Skip to content

Commit ad0aa0e

Browse files
psychedelicioushipsterusername
authored andcommitted
feat(ui): reset canvas layers only resets the layers
1 parent 157b92e commit ad0aa0e

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

invokeai/frontend/web/src/common/components/SessionMenuItems.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
useNewCanvasSession,
55
useNewGallerySession,
66
} from 'features/controlLayers/components/NewSessionConfirmationAlertDialog';
7-
import { canvasReset } from 'features/controlLayers/store/actions';
7+
import { allEntitiesDeleted } from 'features/controlLayers/store/canvasSlice';
88
import { paramsReset } from 'features/controlLayers/store/paramsSlice';
99
import { memo, useCallback } from 'react';
1010
import { useTranslation } from 'react-i18next';
@@ -16,7 +16,7 @@ export const SessionMenuItems = memo(() => {
1616
const { newGallerySessionWithDialog } = useNewGallerySession();
1717
const { newCanvasSessionWithDialog } = useNewCanvasSession();
1818
const resetCanvasLayers = useCallback(() => {
19-
dispatch(canvasReset());
19+
dispatch(allEntitiesDeleted());
2020
}, [dispatch]);
2121
const resetGenerationSettings = useCallback(() => {
2222
dispatch(paramsReset());

invokeai/frontend/web/src/features/controlLayers/store/canvasSlice.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ import {
8080
initialT2IAdapter,
8181
} from './util';
8282

83+
/**
84+
* Gets a fresh canvas initial state with no references in memory to existing objects.
85+
*/
8386
const getInitialState = (): CanvasState => {
8487
const initialInpaintMaskState = getInpaintMaskState(getPrefixedId('inpaint_mask'));
8588
const initialState: CanvasState = {
@@ -1497,6 +1500,15 @@ export const canvasSlice = createSlice({
14971500
break;
14981501
}
14991502
},
1503+
allEntitiesDeleted: (state) => {
1504+
// Deleting all entities is equivalent to resetting the state for each entity type
1505+
const initialState = getInitialState();
1506+
state.rasterLayers = initialState.rasterLayers;
1507+
state.controlLayers = initialState.controlLayers;
1508+
state.inpaintMasks = initialState.inpaintMasks;
1509+
state.regionalGuidance = initialState.regionalGuidance;
1510+
state.referenceImages = initialState.referenceImages;
1511+
},
15001512
canvasMetadataRecalled: (state, action: PayloadAction<CanvasMetadata>) => {
15011513
const { controlLayers, inpaintMasks, rasterLayers, referenceImages, regionalGuidance } = action.payload;
15021514
state.controlLayers.entities = controlLayers;
@@ -1593,7 +1605,7 @@ export const {
15931605
entityArrangedToBack,
15941606
entityOpacityChanged,
15951607
entitiesReordered,
1596-
// allEntitiesDeleted, // currently unused
1608+
allEntitiesDeleted,
15971609
allEntitiesOfTypeIsHiddenToggled,
15981610
// bbox
15991611
bboxChangedFromCanvas,

0 commit comments

Comments
 (0)