Fixes canvas dimensions not setting on first load

This commit is contained in:
psychedelicious 2022-11-26 20:50:07 +11:00 committed by blessedcoolant
parent b0697bc4ff
commit 3131edb255
5 changed files with 11 additions and 12 deletions

View File

@ -28,9 +28,11 @@ import { socketioMiddleware } from './socketio/middleware';
* The necesssary nested persistors with blacklists are configured below. * The necesssary nested persistors with blacklists are configured below.
*/ */
const canvasBlacklist = ['cursorPosition'].map( const canvasBlacklist = [
(blacklistItem) => `canvas.${blacklistItem}` 'cursorPosition',
); 'isCanvasInitialized',
'doesCanvasNeedScaling',
].map((blacklistItem) => `canvas.${blacklistItem}`);
const systemBlacklist = [ const systemBlacklist = [
'currentIteration', 'currentIteration',

View File

@ -503,6 +503,7 @@ export const canvasSlice = createSlice({
state.stageScale = newScale; state.stageScale = newScale;
state.stageCoordinates = newCoordinates; state.stageCoordinates = newCoordinates;
state.stageDimensions = newStageDimensions;
state.boundingBoxCoordinates = { x: 0, y: 0 }; state.boundingBoxCoordinates = { x: 0, y: 0 };
state.boundingBoxDimensions = { width: 512, height: 512 }; state.boundingBoxDimensions = { width: 512, height: 512 };
return; return;

View File

@ -16,7 +16,6 @@ import {
import ImageToImageWorkarea from './ImageToImage'; import ImageToImageWorkarea from './ImageToImage';
import TextToImageWorkarea from './TextToImage'; import TextToImageWorkarea from './TextToImage';
import Lightbox from 'features/lightbox/components/Lightbox'; import Lightbox from 'features/lightbox/components/Lightbox';
import { setDoesCanvasNeedScaling } from 'features/canvas/store/canvasSlice';
import UnifiedCanvasWorkarea from './UnifiedCanvas/UnifiedCanvasWorkarea'; import UnifiedCanvasWorkarea from './UnifiedCanvas/UnifiedCanvasWorkarea';
import UnifiedCanvasIcon from 'common/icons/UnifiedCanvasIcon'; import UnifiedCanvasIcon from 'common/icons/UnifiedCanvasIcon';
import TrainingWIP from 'common/components/WorkInProgress/Training'; import TrainingWIP from 'common/components/WorkInProgress/Training';
@ -143,7 +142,6 @@ export default function InvokeTabs() {
index={activeTab} index={activeTab}
onChange={(index: number) => { onChange={(index: number) => {
dispatch(setActiveTab(index)); dispatch(setActiveTab(index));
dispatch(setDoesCanvasNeedScaling(true));
}} }}
> >
<div className="app-tabs-list">{renderTabs()}</div> <div className="app-tabs-list">{renderTabs()}</div>

View File

@ -26,13 +26,18 @@ const selector = createSelector(
const UnifiedCanvasDisplay = () => { const UnifiedCanvasDisplay = () => {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const { doesCanvasNeedScaling } = useAppSelector(selector); const { doesCanvasNeedScaling } = useAppSelector(selector);
useLayoutEffect(() => { useLayoutEffect(() => {
dispatch(setDoesCanvasNeedScaling(true));
const resizeCallback = _.debounce(() => { const resizeCallback = _.debounce(() => {
dispatch(setDoesCanvasNeedScaling(true)); dispatch(setDoesCanvasNeedScaling(true));
}, 250); }, 250);
window.addEventListener('resize', resizeCallback); window.addEventListener('resize', resizeCallback);
return () => window.removeEventListener('resize', resizeCallback); return () => window.removeEventListener('resize', resizeCallback);
}, [dispatch]); }, [dispatch]);

View File

@ -1,15 +1,8 @@
import UnifiedCanvasPanel from './UnifiedCanvasPanel'; import UnifiedCanvasPanel from './UnifiedCanvasPanel';
import UnifiedCanvasDisplay from './UnifiedCanvasDisplay'; import UnifiedCanvasDisplay from './UnifiedCanvasDisplay';
import InvokeWorkarea from 'features/tabs/components/InvokeWorkarea'; import InvokeWorkarea from 'features/tabs/components/InvokeWorkarea';
import { useAppDispatch } from 'app/store';
import { useEffect } from 'react';
import { setDoesCanvasNeedScaling } from 'features/canvas/store/canvasSlice';
export default function UnifiedCanvasWorkarea() { export default function UnifiedCanvasWorkarea() {
const dispatch = useAppDispatch();
useEffect(() => {
dispatch(setDoesCanvasNeedScaling(true));
}, [dispatch]);
return ( return (
<InvokeWorkarea <InvokeWorkarea
optionsPanel={<UnifiedCanvasPanel />} optionsPanel={<UnifiedCanvasPanel />}