Skip to content

Commit c473737

Browse files
psychedelicioushipsterusername
authored andcommitted
fix(ui): do not update bbox when changing models if model base has not changed
1 parent df20450 commit c473737

File tree

3 files changed

+7
-11
lines changed

3 files changed

+7
-11
lines changed

invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { bboxSyncedToOptimalDimension } from 'features/controlLayers/store/canva
44
import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice';
55
import { loraDeleted } from 'features/controlLayers/store/lorasSlice';
66
import { modelChanged, vaeSelected } from 'features/controlLayers/store/paramsSlice';
7+
import { selectBboxModelBase } from 'features/controlLayers/store/selectors';
78
import { modelSelected } from 'features/parameters/store/actions';
89
import { zParameterModel } from 'features/parameters/types/parameterSchemas';
910
import { toast } from 'features/toast/toast';
@@ -70,7 +71,8 @@ export const addModelSelectedListener = (startAppListening: AppStartListening) =
7071
}
7172

7273
dispatch(modelChanged({ model: newModel, previousModel: state.params.model }));
73-
if (!selectIsStaging(state)) {
74+
const modelBase = selectBboxModelBase(state);
75+
if (!selectIsStaging(state) && modelBase !== state.params.model?.base) {
7476
dispatch(bboxSyncedToOptimalDimension());
7577
}
7678
},

invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelsLoaded.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ import type { AppStartListening } from 'app/store/middleware/listenerMiddleware'
33
import type { AppDispatch, RootState } from 'app/store/store';
44
import type { SerializableObject } from 'common/types';
55
import {
6-
bboxSyncedToOptimalDimension,
76
controlLayerModelChanged,
87
referenceImageIPAdapterModelChanged,
98
rgIPAdapterModelChanged,
109
} from 'features/controlLayers/store/canvasSlice';
11-
import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice';
1210
import { loraDeleted } from 'features/controlLayers/store/lorasSlice';
1311
import {
1412
clipEmbedModelSelected,
@@ -20,6 +18,7 @@ import {
2018
} from 'features/controlLayers/store/paramsSlice';
2119
import { selectCanvasSlice } from 'features/controlLayers/store/selectors';
2220
import { getEntityIdentifier } from 'features/controlLayers/store/types';
21+
import { modelSelected } from 'features/parameters/store/actions';
2322
import { postProcessingModelChanged, upscaleModelChanged } from 'features/parameters/store/upscaleSlice';
2423
import {
2524
zParameterCLIPEmbedModel,
@@ -120,10 +119,7 @@ const handleMainModels: ModelHandler = (models, state, dispatch, log) => {
120119
{ selectedMainModel, defaultModel },
121120
'No selected main model or selected main model is not available, selecting default model'
122121
);
123-
dispatch(modelChanged({ model: zParameterModel.parse(defaultModel), previousModel: selectedMainModel }));
124-
if (!selectIsStaging(state)) {
125-
dispatch(bboxSyncedToOptimalDimension());
126-
}
122+
dispatch(modelSelected(defaultModel));
127123
return;
128124
}
129125
}
@@ -132,10 +128,7 @@ const handleMainModels: ModelHandler = (models, state, dispatch, log) => {
132128
{ selectedMainModel, firstModel },
133129
'No selected main model or selected main model is not available, selecting first available model'
134130
);
135-
dispatch(modelChanged({ model: zParameterModel.parse(firstModel), previousModel: selectedMainModel }));
136-
if (!selectIsStaging(state)) {
137-
dispatch(bboxSyncedToOptimalDimension());
138-
}
131+
dispatch(modelSelected(firstModel));
139132
};
140133

141134
const handleUpscalingModels: ModelHandler = (models, state, dispatch, log) => {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ export const selectAspectRatioValue = createSelector(selectCanvasSlice, (canvas)
338338
export const selectScaledSize = createSelector(selectBbox, (bbox) => bbox.scaledSize);
339339
export const selectScaleMethod = createSelector(selectBbox, (bbox) => bbox.scaleMethod);
340340
export const selectBboxRect = createSelector(selectBbox, (bbox) => bbox.rect);
341+
export const selectBboxModelBase = createSelector(selectBbox, (bbox) => bbox.modelBase);
341342

342343
export const selectCanvasMetadata = createSelector(
343344
selectCanvasSlice,

0 commit comments

Comments
 (0)