diff --git a/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityAdapter.ts b/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityAdapter.ts deleted file mode 100644 index db1bd01ba25..00000000000 --- a/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityAdapter.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate'; -import type { CanvasEntityAdapter } from 'features/controlLayers/konva/CanvasEntity/types'; -import type { CanvasEntityIdentifier } from 'features/controlLayers/store/types'; -import { useMemo } from 'react'; -import { assert } from 'tsafe'; - -/** @knipignore */ -export const useEntityAdapter = (entityIdentifier: CanvasEntityIdentifier): CanvasEntityAdapter => { - const canvasManager = useCanvasManager(); - - const adapter = useMemo(() => { - const adapter = canvasManager.getAdapter(entityIdentifier); - assert(adapter, 'Entity adapter not found'); - return adapter; - }, [canvasManager, entityIdentifier]); - - return adapter; -}; - -export const useEntityAdapterSafe = (entityIdentifier: CanvasEntityIdentifier | null): CanvasEntityAdapter | null => { - const canvasManager = useCanvasManager(); - - const adapter = useMemo(() => { - if (!entityIdentifier) { - return null; - } - const adapter = canvasManager.getAdapter(entityIdentifier); - return adapter ?? null; - }, [canvasManager, entityIdentifier]); - - return adapter; -}; diff --git a/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityFilter.ts b/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityFilter.ts index 73206410205..06bea93d5ed 100644 --- a/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityFilter.ts +++ b/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityFilter.ts @@ -2,8 +2,8 @@ import { useStore } from '@nanostores/react'; import { useAppSelector } from 'app/store/storeHooks'; import { SyncableMap } from 'common/util/SyncableMap/SyncableMap'; import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate'; +import { useEntityAdapterSafe } from 'features/controlLayers/contexts/EntityAdapterContext'; import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy'; -import { useEntityAdapterSafe } from 'features/controlLayers/hooks/useEntityAdapter'; import type { AnyObjectRenderer } from 'features/controlLayers/konva/CanvasObject/types'; import { getEmptyRect } from 'features/controlLayers/konva/util'; import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice'; diff --git a/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityTransform.ts b/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityTransform.ts index 63e57f4afb2..911e419ec9c 100644 --- a/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityTransform.ts +++ b/invokeai/frontend/web/src/features/controlLayers/hooks/useEntityTransform.ts @@ -2,8 +2,8 @@ import { useStore } from '@nanostores/react'; import { useAppSelector } from 'app/store/storeHooks'; import { SyncableMap } from 'common/util/SyncableMap/SyncableMap'; import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate'; +import { useEntityAdapterSafe } from 'features/controlLayers/contexts/EntityAdapterContext'; import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy'; -import { useEntityAdapterSafe } from 'features/controlLayers/hooks/useEntityAdapter'; import type { AnyObjectRenderer } from 'features/controlLayers/konva/CanvasObject/types'; import { getEmptyRect } from 'features/controlLayers/konva/util'; import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice'; diff --git a/invokeai/frontend/web/src/features/controlLayers/konva/CanvasTool/CanvasToolModule.ts b/invokeai/frontend/web/src/features/controlLayers/konva/CanvasTool/CanvasToolModule.ts index 115b5a88155..4aad54c8f79 100644 --- a/invokeai/frontend/web/src/features/controlLayers/konva/CanvasTool/CanvasToolModule.ts +++ b/invokeai/frontend/web/src/features/controlLayers/konva/CanvasTool/CanvasToolModule.ts @@ -662,7 +662,12 @@ export class CanvasToolModule extends CanvasModuleBase { // Cancel shape drawing on escape e.preventDefault(); const selectedEntity = this.manager.stateApi.getSelectedEntityAdapter(); - if (selectedEntity) { + if ( + selectedEntity && + !selectedEntity.filterer?.$isFiltering.get() && + !selectedEntity.transformer.$isTransforming.get() && + selectedEntity.bufferRenderer.hasBuffer() + ) { selectedEntity.bufferRenderer.clearBuffer(); } return;