Skip to content

Commit 21ffaab

Browse files
fix(ui): do not allow invoking when canvas is selectig object
1 parent 1e969f9 commit 21ffaab

File tree

2 files changed

+42
-17
lines changed

2 files changed

+42
-17
lines changed

invokeai/frontend/web/public/locales/en.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,10 +1025,11 @@
10251025
"fluxModelIncompatibleBboxHeight": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), bbox height is {{height}}",
10261026
"fluxModelIncompatibleScaledBboxWidth": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), scaled bbox width is {{width}}",
10271027
"fluxModelIncompatibleScaledBboxHeight": "$t(parameters.invoke.fluxRequiresDimensionsToBeMultipleOf16), scaled bbox height is {{height}}",
1028-
"canvasIsFiltering": "Canvas is filtering",
1029-
"canvasIsTransforming": "Canvas is transforming",
1030-
"canvasIsRasterizing": "Canvas is rasterizing",
1031-
"canvasIsCompositing": "Canvas is compositing",
1028+
"canvasIsFiltering": "Canvas is busy (filtering)",
1029+
"canvasIsTransforming": "Canvas is busy (transforming)",
1030+
"canvasIsRasterizing": "Canvas is busy (rasterizing)",
1031+
"canvasIsCompositing": "Canvas is busy (compositing)",
1032+
"canvasIsSelectingObject": "Canvas is busy (selecting object)",
10321033
"noPrompts": "No prompts generated",
10331034
"noNodesInGraph": "No nodes in graph",
10341035
"systemDisconnected": "System disconnected",

invokeai/frontend/web/src/common/hooks/useIsReadyToEnqueue.ts

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,25 @@ const LAYER_TYPE_TO_TKEY = {
3030
control_layer: 'controlLayers.controlLayer',
3131
} as const;
3232

33-
const createSelector = (
34-
templates: Templates,
35-
isConnected: boolean,
36-
canvasIsFiltering: boolean,
37-
canvasIsTransforming: boolean,
38-
canvasIsRasterizing: boolean,
39-
canvasIsCompositing: boolean
40-
) =>
41-
createMemoizedSelector(
33+
const createSelector = (arg: {
34+
templates: Templates;
35+
isConnected: boolean;
36+
canvasIsFiltering: boolean;
37+
canvasIsTransforming: boolean;
38+
canvasIsRasterizing: boolean;
39+
canvasIsCompositing: boolean;
40+
canvasIsSelectingObject: boolean;
41+
}) => {
42+
const {
43+
templates,
44+
isConnected,
45+
canvasIsFiltering,
46+
canvasIsTransforming,
47+
canvasIsRasterizing,
48+
canvasIsCompositing,
49+
canvasIsSelectingObject,
50+
} = arg;
51+
return createMemoizedSelector(
4252
[
4353
selectSystemSlice,
4454
selectNodesSlice,
@@ -147,6 +157,9 @@ const createSelector = (
147157
if (canvasIsCompositing) {
148158
reasons.push({ content: i18n.t('parameters.invoke.canvasIsCompositing') });
149159
}
160+
if (canvasIsSelectingObject) {
161+
reasons.push({ content: i18n.t('parameters.invoke.canvasIsSelectingObject') });
162+
}
150163

151164
if (dynamicPrompts.prompts.length === 0 && getShouldProcessPrompt(positivePrompt)) {
152165
reasons.push({ content: i18n.t('parameters.invoke.noPrompts') });
@@ -305,6 +318,7 @@ const createSelector = (
305318
return { isReady: !reasons.length, reasons };
306319
}
307320
);
321+
};
308322

309323
export const useIsReadyToEnqueue = () => {
310324
const templates = useStore($templates);
@@ -313,18 +327,28 @@ export const useIsReadyToEnqueue = () => {
313327
const canvasIsFiltering = useStore(canvasManager?.stateApi.$isFiltering ?? $true);
314328
const canvasIsTransforming = useStore(canvasManager?.stateApi.$isTransforming ?? $true);
315329
const canvasIsRasterizing = useStore(canvasManager?.stateApi.$isRasterizing ?? $true);
330+
const canvasIsSelectingObject = useStore(canvasManager?.stateApi.$isSegmenting ?? $true);
316331
const canvasIsCompositing = useStore(canvasManager?.compositor.$isBusy ?? $true);
317332
const selector = useMemo(
318333
() =>
319-
createSelector(
334+
createSelector({
320335
templates,
321336
isConnected,
322337
canvasIsFiltering,
323338
canvasIsTransforming,
324339
canvasIsRasterizing,
325-
canvasIsCompositing
326-
),
327-
[templates, isConnected, canvasIsFiltering, canvasIsTransforming, canvasIsRasterizing, canvasIsCompositing]
340+
canvasIsCompositing,
341+
canvasIsSelectingObject,
342+
}),
343+
[
344+
templates,
345+
isConnected,
346+
canvasIsFiltering,
347+
canvasIsTransforming,
348+
canvasIsRasterizing,
349+
canvasIsCompositing,
350+
canvasIsSelectingObject,
351+
]
328352
);
329353
const value = useAppSelector(selector);
330354
return value;

0 commit comments

Comments
 (0)