@@ -866,7 +866,8 @@ class Activity {
866866 }
867867
868868 //if any window resize event occurs:
869- this . addEventListener ( window , "resize" , ( ) => repositionBlocks ( this ) ) ;
869+ this . _repositionBlocksListener = ( ) => repositionBlocks ( this ) ;
870+ this . addEventListener ( window , "resize" , this . _repositionBlocksListener ) ;
870871
871872 /**
872873 * Finds and organizes blocks within the workspace.
@@ -3704,16 +3705,20 @@ class Activity {
37043705 }
37053706
37063707 let resizeTimeout ;
3707- this . addEventListener ( window , "resize" , ( ) => {
3708+ this . _resizeListener = ( ) => {
37083709 clearTimeout ( resizeTimeout ) ;
37093710 resizeTimeout = setTimeout ( ( ) => {
37103711 handleResize ( ) ;
37113712 this . _setupPaletteMenu ( ) ;
37123713 } , 100 ) ;
3713- } ) ;
3714- this . addEventListener ( window , "orientationchange" , handleResize ) ;
3714+ } ;
3715+ this . addEventListener ( window , "resize" , this . _resizeListener ) ;
3716+
3717+ this . _orientationChangeListener = handleResize ;
3718+ this . addEventListener ( window , "orientationchange" , this . _orientationChangeListener ) ;
3719+
37153720 const that = this ;
3716- const resizeCanvas_ = ( ) => {
3721+ this . _resizeCanvasListener = ( ) => {
37173722 try {
37183723 that . _onResize ( false ) ;
37193724 document . getElementById ( "hideContents" ) . click ( ) ;
@@ -3723,8 +3728,8 @@ class Activity {
37233728 }
37243729 } ;
37253730
3726- resizeCanvas_ ( ) ;
3727- this . addEventListener ( window , "orientationchange" , resizeCanvas_ ) ;
3731+ this . _resizeCanvasListener ( ) ;
3732+ this . addEventListener ( window , "orientationchange" , this . _resizeCanvasListener ) ;
37283733
37293734 /*
37303735 * Restore last stack pushed to trashStack back onto canvas.
@@ -7565,6 +7570,26 @@ class Activity {
75657570 * Removes all tracked event listeners.
75667571 */
75677572 cleanupEventListeners ( ) {
7573+ if ( this . _resizeListener ) {
7574+ this . removeEventListener ( window , "resize" , this . _resizeListener ) ;
7575+ this . _resizeListener = null ;
7576+ }
7577+
7578+ if ( this . _orientationChangeListener ) {
7579+ this . removeEventListener ( window , "orientationchange" , this . _orientationChangeListener ) ;
7580+ this . _orientationChangeListener = null ;
7581+ }
7582+
7583+ if ( this . _resizeCanvasListener ) {
7584+ this . removeEventListener ( window , "orientationchange" , this . _resizeCanvasListener ) ;
7585+ this . _resizeCanvasListener = null ;
7586+ }
7587+
7588+ if ( this . _repositionBlocksListener ) {
7589+ this . removeEventListener ( window , "resize" , this . _repositionBlocksListener ) ;
7590+ this . _repositionBlocksListener = null ;
7591+ }
7592+
75687593 while ( this . _listeners . length > 0 ) {
75697594 const { target, type, listener, options } = this . _listeners . pop ( ) ;
75707595 if ( target && typeof target . removeEventListener === "function" ) {
0 commit comments