diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/setDefaultSettings.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/setDefaultSettings.ts index ead7da3057..38978baf3d 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/setDefaultSettings.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/setDefaultSettings.ts @@ -3,6 +3,7 @@ import { isNil } from 'es-toolkit'; import { bboxHeightChanged, bboxWidthChanged } from 'features/controlLayers/store/canvasSlice'; import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice'; import { + heightChanged, setCfgRescaleMultiplier, setCfgScale, setGuidance, @@ -10,6 +11,7 @@ import { setSteps, vaePrecisionChanged, vaeSelected, + widthChanged, } from 'features/controlLayers/store/paramsSlice'; import { setDefaultSettings } from 'features/parameters/store/actions'; import { @@ -24,6 +26,7 @@ import { zParameterVAEModel, } from 'features/parameters/types/parameterSchemas'; import { toast } from 'features/toast/toast'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import { t } from 'i18next'; import { modelConfigsAdapterSelectors, modelsApi } from 'services/api/endpoints/models'; import { isNonRefinerMainModelConfig } from 'services/api/types'; @@ -113,15 +116,24 @@ export const addSetDefaultSettingsListener = (startAppListening: AppStartListeni const setSizeOptions = { updateAspectRatio: true, clamp: true }; const isStaging = selectIsStaging(getState()); - if (!isStaging && width) { + const activeTab = selectActiveTab(getState()); + if (activeTab === 'generate') { if (isParameterWidth(width)) { - dispatch(bboxWidthChanged({ width, ...setSizeOptions })); + dispatch(widthChanged({ width, ...setSizeOptions })); + } + if (isParameterHeight(height)) { + dispatch(heightChanged({ height, ...setSizeOptions })); } } - if (!isStaging && height) { - if (isParameterHeight(height)) { - dispatch(bboxHeightChanged({ height, ...setSizeOptions })); + if (activeTab === 'canvas') { + if (!isStaging) { + if (isParameterWidth(width)) { + dispatch(bboxWidthChanged({ width, ...setSizeOptions })); + } + if (isParameterHeight(height)) { + dispatch(bboxHeightChanged({ height, ...setSizeOptions })); + } } } diff --git a/invokeai/frontend/web/src/features/metadata/parsing.tsx b/invokeai/frontend/web/src/features/metadata/parsing.tsx index bd8e04f77d..f080c6dc13 100644 --- a/invokeai/frontend/web/src/features/metadata/parsing.tsx +++ b/invokeai/frontend/web/src/features/metadata/parsing.tsx @@ -8,6 +8,7 @@ import { getPrefixedId } from 'features/controlLayers/konva/util'; import { bboxHeightChanged, bboxWidthChanged, canvasMetadataRecalled } from 'features/controlLayers/store/canvasSlice'; import { loraAllDeleted, loraRecalled } from 'features/controlLayers/store/lorasSlice'; import { + heightChanged, negativePrompt2Changed, negativePromptChanged, positivePrompt2Changed, @@ -31,6 +32,7 @@ import { setSteps, shouldConcatPromptsChanged, vaeSelected, + widthChanged, } from 'features/controlLayers/store/paramsSlice'; import { refImagesRecalled } from 'features/controlLayers/store/refImagesSlice'; import type { CanvasMetadata, LoRA, RefImageState } from 'features/controlLayers/store/types'; @@ -82,6 +84,7 @@ import { zParameterStrength, } from 'features/parameters/types/parameterSchemas'; import { toast } from 'features/toast/toast'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import { t } from 'i18next'; import type { ComponentType, ReactNode } from 'react'; import { useCallback, useEffect, useState } from 'react'; @@ -396,7 +399,12 @@ const Width: SingleMetadataHandler = { return Promise.resolve(parsed); }, recall: (value, store) => { - store.dispatch(bboxWidthChanged({ width: value, updateAspectRatio: true, clamp: true })); + const activeTab = selectActiveTab(store.getState()); + if (activeTab === 'canvas') { + store.dispatch(bboxWidthChanged({ width: value, updateAspectRatio: true, clamp: true })); + } else if (activeTab === 'generate') { + store.dispatch(widthChanged({ width: value, updateAspectRatio: true, clamp: true })); + } }, LabelComponent: () => , ValueComponent: ({ value }: SingleMetadataValueProps) => , @@ -413,7 +421,12 @@ const Height: SingleMetadataHandler = { return Promise.resolve(parsed); }, recall: (value, store) => { - store.dispatch(bboxHeightChanged({ height: value, updateAspectRatio: true, clamp: true })); + const activeTab = selectActiveTab(store.getState()); + if (activeTab === 'canvas') { + store.dispatch(bboxHeightChanged({ height: value, updateAspectRatio: true, clamp: true })); + } else if (activeTab === 'generate') { + store.dispatch(heightChanged({ height: value, updateAspectRatio: true, clamp: true })); + } }, LabelComponent: () => , ValueComponent: ({ value }: SingleMetadataValueProps) => ,