Browse Source

fix: remove resize listener when BrowserWindow closed (#44000)

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <[email protected]>
trop[bot] 6 months ago
parent
commit
ce2163da2f
1 changed files with 9 additions and 4 deletions
  1. 9 4
      lib/browser/api/browser-view.ts

+ 9 - 4
lib/browser/api/browser-view.ts

@@ -68,10 +68,7 @@ export default class BrowserView {
   // a webContents can be closed by the user while the BrowserView
   // remains alive and attached to a BrowserWindow.
   set ownerWindow (w: BrowserWindow | null) {
-    if (this.#ownerWindow && this.#resizeListener) {
-      this.#ownerWindow.off('resize', this.#resizeListener);
-      this.#resizeListener = null;
-    }
+    this.#removeResizeListener();
 
     if (this.webContents && !this.webContents.isDestroyed()) {
       this.webContents._setOwnerWindow(w);
@@ -82,6 +79,7 @@ export default class BrowserView {
       this.#lastWindowSize = w.getBounds();
       w.on('resize', this.#resizeListener = this.#autoResize.bind(this));
       w.on('closed', () => {
+        this.#removeResizeListener();
         this.#ownerWindow = null;
         this.#destroyListener = null;
       });
@@ -94,6 +92,13 @@ export default class BrowserView {
     this.#ownerWindow?.contentView.removeChildView(this.webContentsView);
   }
 
+  #removeResizeListener () {
+    if (this.#ownerWindow && this.#resizeListener) {
+      this.#ownerWindow.off('resize', this.#resizeListener);
+      this.#resizeListener = null;
+    }
+  }
+
   #autoHorizontalProportion: {width: number, left: number} | null = null;
   #autoVerticalProportion: {height: number, top: number} | null = null;
   #autoResize () {