Explorar o código

Merge pull request #6370 from Poolminer/master

Add key listeners when already focused
David Catuhe %!s(int64=6) %!d(string=hai) anos
pai
achega
fe510a48e5
Modificáronse 2 ficheiros con 14 adicións e 7 borrados
  1. 1 0
      dist/preview release/what's new.md
  2. 13 7
      src/Inputs/scene.inputManager.ts

+ 1 - 0
dist/preview release/what's new.md

@@ -31,5 +31,6 @@
 ## Bug fixes
 - Added support for `AnimationGroup` serialization ([Drigax](https://github.com/drigax/))
 - Removing assetContainer from scene will also remove gui layers ([TrevorDev](https://github.com/TrevorDev))
+- A secene's input manager not adding key listeners when the canvas is already focused ([Poolminer](https://github.com/Poolminer))
 
 ## Breaking changes

+ 13 - 7
src/Inputs/scene.inputManager.ts

@@ -762,13 +762,19 @@ export class InputManager {
         };
 
         // Keyboard events
-        this._onCanvasFocusObserver = engine.onCanvasFocusObservable.add(() => {
-            if (!canvas) {
-                return;
-            }
-            canvas.addEventListener("keydown", this._onKeyDown, false);
-            canvas.addEventListener("keyup", this._onKeyUp, false);
-        });
+        this._onCanvasFocusObserver = engine.onCanvasFocusObservable.add((() => {
+            let fn = () => {
+                if (!canvas) {
+                    return;
+                }
+                canvas.addEventListener("keydown", this._onKeyDown, false);
+                canvas.addEventListener("keyup", this._onKeyUp, false);
+            };
+            if (document.activeElement === canvas) {
+                fn();
+            }
+            return fn;
+        })());
 
         this._onCanvasBlurObserver = engine.onCanvasBlurObservable.add(() => {
             if (!canvas) {