Sfoglia il codice sorgente

Change the handling of the fullscreenchange event

customisations
alemart 11 mesi fa
parent
commit
c11c157420
1 ha cambiato i file con 30 aggiunte e 8 eliminazioni
  1. 30
    8
      src/core/viewport.ts

+ 30
- 8
src/core/viewport.ts Vedi File

@@ -312,18 +312,42 @@ class ViewportCanvases
312 312
  */
313 313
 class ViewportFullscreenHelper
314 314
 {
315
+    /** The viewport */
316
+    private readonly _viewport: Viewport;
317
+
315 318
     /** The container to be put in fullscreen */
316 319
     private readonly _container: HTMLElement;
317 320
 
321
+    /** Event handler */
322
+    private _boundEventHandler: EventListener;
323
+
318 324
 
319 325
 
320 326
     /**
321 327
      * Constructor
322
-     * @param _viewport Viewport
328
+     * @param viewport Viewport
323 329
      */
324
-    constructor(private readonly _viewport: Viewport)
330
+    constructor(viewport: Viewport)
325 331
     {
326
-        this._container = _viewport.container;
332
+        this._viewport = viewport;
333
+        this._container = viewport.container;
334
+        this._boundEventHandler = this._triggerEvent.bind(this);
335
+    }
336
+
337
+    /**
338
+     * Initialize
339
+     */
340
+    init(): void
341
+    {
342
+        this._container.addEventListener('fullscreenchange', this._boundEventHandler);
343
+    }
344
+
345
+    /**
346
+     * Release
347
+     */
348
+    release(): void
349
+    {
350
+        this._container.removeEventListener('fullscreenchange', this._boundEventHandler);
327 351
     }
328 352
 
329 353
     /**
@@ -354,7 +378,6 @@ class ViewportFullscreenHelper
354 378
                     if(container === (document as any).webkitFullscreenElement) {
355 379
                         Utils.log('Entering fullscreen mode...');
356 380
                         resolve();
357
-                        this._triggerEvent();
358 381
                     }
359 382
                     else
360 383
                         reject(new TypeError());
@@ -373,7 +396,6 @@ class ViewportFullscreenHelper
373 396
             }).then(() => {
374 397
                 Utils.log('Entering fullscreen mode...');
375 398
                 resolve();
376
-                this._triggerEvent();
377 399
             }, reject);
378 400
         });
379 401
     }
@@ -401,7 +423,6 @@ class ViewportFullscreenHelper
401 423
                     if(doc.webkitFullscreenElement === null) {
402 424
                         Utils.log('Exiting fullscreen mode...');
403 425
                         resolve();
404
-                        this._triggerEvent();
405 426
                     }
406 427
                     else
407 428
                         reject(new TypeError());
@@ -418,7 +439,6 @@ class ViewportFullscreenHelper
418 439
             document.exitFullscreen().then(() => {
419 440
                 Utils.log('Exiting fullscreen mode...');
420 441
                 resolve();
421
-                this._triggerEvent();
422 442
             }, reject);
423 443
         });
424 444
     }
@@ -988,6 +1008,7 @@ export class Viewport extends ViewportEventTarget
988 1008
         this._hud._init(HUD_ZINDEX);
989 1009
         this._canvases.init();
990 1010
         this._resizer.init();
1011
+        this._fullscreen.init();
991 1012
         this._fullscreenButton?.init();
992 1013
     }
993 1014
 
@@ -997,10 +1018,11 @@ export class Viewport extends ViewportEventTarget
997 1018
      */
998 1019
     _release(): void
999 1020
     {
1021
+        this._fullscreenButton?.release();
1022
+        this._fullscreen.release();
1000 1023
         this._resizer.release();
1001 1024
         this._canvases.release();
1002 1025
         this._hud._release();
1003 1026
         this._containers.release();
1004
-        this._fullscreenButton?.release();
1005 1027
     }
1006 1028
 }

Loading…
Annulla
Salva