Skip to content

Commit 1f5d744

Browse files
psychedelicioushipsterusername
authored andcommitted
fix(ui): disable canvas-related image context menu items when canvas is busy
1 parent b36c6af commit 1f5d744

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewCanvasFromImage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { MenuItem } from '@invoke-ai/ui-library';
22
import { useAppDispatch } from 'app/store/storeHooks';
33
import { useNewCanvasFromImage } from 'features/controlLayers/hooks/addLayerHooks';
4+
import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy';
45
import { useImageViewer } from 'features/gallery/components/ImageViewer/useImageViewer';
56
import { useImageDTOContext } from 'features/gallery/contexts/ImageDTOContext';
67
import { toast } from 'features/toast/toast';
@@ -15,6 +16,7 @@ export const ImageMenuItemNewCanvasFromImage = memo(() => {
1516
const imageDTO = useImageDTOContext();
1617
const imageViewer = useImageViewer();
1718
const newCanvasFromImage = useNewCanvasFromImage();
19+
const isBusy = useCanvasIsBusy();
1820

1921
const onClick = useCallback(() => {
2022
newCanvasFromImage(imageDTO);
@@ -28,7 +30,7 @@ export const ImageMenuItemNewCanvasFromImage = memo(() => {
2830
}, [dispatch, imageDTO, imageViewer, newCanvasFromImage, t]);
2931

3032
return (
31-
<MenuItem icon={<PiFileBold />} onClickCapture={onClick}>
33+
<MenuItem icon={<PiFileBold />} onClickCapture={onClick} isDisabled={isBusy}>
3234
{t('controlLayers.newCanvasFromImage')}
3335
</MenuItem>
3436
);

invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemNewLayerFromImage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { MenuItem } from '@invoke-ai/ui-library';
22
import { useAppDispatch } from 'app/store/storeHooks';
33
import { NewLayerIcon } from 'features/controlLayers/components/common/icons';
44
import { useNewRasterLayerFromImage } from 'features/controlLayers/hooks/addLayerHooks';
5+
import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy';
56
import { useImageViewer } from 'features/gallery/components/ImageViewer/useImageViewer';
67
import { useImageDTOContext } from 'features/gallery/contexts/ImageDTOContext';
78
import { sentImageToCanvas } from 'features/gallery/store/actions';
@@ -16,6 +17,7 @@ export const ImageMenuItemNewLayerFromImage = memo(() => {
1617
const imageDTO = useImageDTOContext();
1718
const imageViewer = useImageViewer();
1819
const newRasterLayerFromImage = useNewRasterLayerFromImage();
20+
const isBusy = useCanvasIsBusy();
1921

2022
const onClick = useCallback(() => {
2123
dispatch(sentImageToCanvas());
@@ -30,7 +32,7 @@ export const ImageMenuItemNewLayerFromImage = memo(() => {
3032
}, [dispatch, imageDTO, imageViewer, newRasterLayerFromImage, t]);
3133

3234
return (
33-
<MenuItem icon={<NewLayerIcon />} onClickCapture={onClick}>
35+
<MenuItem icon={<NewLayerIcon />} onClickCapture={onClick} isDisabled={isBusy}>
3436
{t('controlLayers.newLayerFromImage')}
3537
</MenuItem>
3638
);

invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemsNewImg2ImgCanvasFromImage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { MenuItem } from '@invoke-ai/ui-library';
22
import { useAppDispatch } from 'app/store/storeHooks';
33
import { useNewImg2ImgCanvasFromImage } from 'features/controlLayers/hooks/addLayerHooks';
4+
import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy';
45
import { useImageViewer } from 'features/gallery/components/ImageViewer/useImageViewer';
56
import { useImageDTOContext } from 'features/gallery/contexts/ImageDTOContext';
67
import { toast } from 'features/toast/toast';
@@ -15,6 +16,7 @@ export const ImageMenuItemsNewImg2ImgCanvasFromImage = memo(() => {
1516
const imageDTO = useImageDTOContext();
1617
const imageViewer = useImageViewer();
1718
const newImg2ImgCanvasFromImage = useNewImg2ImgCanvasFromImage();
19+
const isBusy = useCanvasIsBusy();
1820

1921
const onClick = useCallback(() => {
2022
newImg2ImgCanvasFromImage(imageDTO);
@@ -28,7 +30,7 @@ export const ImageMenuItemsNewImg2ImgCanvasFromImage = memo(() => {
2830
}, [dispatch, imageDTO, imageViewer, newImg2ImgCanvasFromImage, t]);
2931

3032
return (
31-
<MenuItem icon={<PiFileImageBold />} onClickCapture={onClick}>
33+
<MenuItem icon={<PiFileImageBold />} onClickCapture={onClick} isDisabled={isBusy}>
3234
{t('controlLayers.newImg2ImgCanvasFromImage')}
3335
</MenuItem>
3436
);

0 commit comments

Comments
 (0)