@@ -192,6 +192,7 @@ class CurrentIndexCubit extends Cubit<CurrentIndex> {
192192 if (selectState != SelectState .none) {
193193 state.handler.dispose (bloc);
194194 state.temporaryHandler? .dispose (bloc);
195+ _disposeTemporaryForegrounds ();
195196 _disposeForegrounds ();
196197 final foregrounds = handler.createForegrounds (
197198 this ,
@@ -264,6 +265,15 @@ class CurrentIndexCubit extends Cubit<CurrentIndex> {
264265 change.nextState.userName != change.currentState.userName) {
265266 _sendNetworkingState ();
266267 }
268+ final newViewport = change.nextState.cameraViewport;
269+ final currentViewport = change.currentState.cameraViewport;
270+ if (change.currentState.cameraViewport != change.nextState.cameraViewport) {
271+ change.nextState.handler.onViewportUpdated (currentViewport, newViewport);
272+ change.nextState.temporaryHandler? .onViewportUpdated (
273+ currentViewport,
274+ newViewport,
275+ );
276+ }
267277 }
268278
269279 void _sendNetworkingState ({
@@ -345,7 +355,6 @@ class CurrentIndexCubit extends Cubit<CurrentIndex> {
345355 if (docState is ! DocumentLoadSuccess ) return ;
346356 state.handler.dispose (bloc);
347357 final handler = Handler .fromTool (tool);
348- state.handler.dispose (bloc);
349358 _disposeForegrounds ();
350359 final foregrounds = handler.createForegrounds (
351360 this ,
@@ -694,16 +703,25 @@ class CurrentIndexCubit extends Cubit<CurrentIndex> {
694703 e.dispose (bloc);
695704 }
696705 _disposeForegrounds ();
706+ _disposeTemporaryForegrounds ();
707+ _disposeNetworkingForegrounds ();
708+ _disposeToggleableForegrounds ();
697709 emit (
698710 state.copyWith (
699711 index: null ,
700712 handler: HandHandler (),
701713 cursor: MouseCursor .defer,
702- foregrounds: [],
714+ foregrounds: const < Renderer > [],
703715 temporaryHandler: null ,
704716 temporaryForegrounds: null ,
705717 temporaryCursor: null ,
706718 temporaryRendererStates: null ,
719+ toolbar: null ,
720+ temporaryToolbar: null ,
721+ rendererStates: const < String , RendererState > {},
722+ toggleableHandlers: const < int , Handler <Tool >> {},
723+ toggleableForegrounds: const < int , List <Renderer >> {},
724+ networkingForegrounds: const < Renderer > [],
707725 cameraViewport: CameraViewport .unbaked (),
708726 ),
709727 );
@@ -1603,7 +1621,6 @@ class CurrentIndexCubit extends Cubit<CurrentIndex> {
16031621 bool Function ()? shouldRefresh,
16041622 bool updateIndex = false ,
16051623 }) async {
1606- final cameraViewport = current.cameraViewport;
16071624 for (var renderer in {
16081625 ...? backgrounds,
16091626 ...? replacedElements,
@@ -1630,11 +1647,7 @@ class CurrentIndexCubit extends Cubit<CurrentIndex> {
16301647 } else if (backgrounds != null ) {
16311648 await this .unbake (blocState, backgrounds: backgrounds);
16321649 } else {
1633- final elements = List <Renderer <PadElement >>.from (
1634- cameraViewport.unbakedElements,
1635- );
1636- elements.addAll (addedElements);
1637- await addUnbaked (blocState, elements);
1650+ await addUnbaked (blocState, addedElements);
16381651 }
16391652
16401653 setSaveState (saved: SaveState .unsaved);
0 commit comments