Procházet zdrojové kódy

GUI: Added moveFocusToControl

David Catuhe před 7 roky
rodič
revize
2e8eaa9b6c

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1387 - 1387
dist/preview release/babylon.d.ts


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1387 - 1387
dist/preview release/babylon.module.d.ts


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 4722 - 4722
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 4722 - 4722
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.module.d.ts


+ 2 - 0
dist/preview release/gui/babylon.gui.d.ts

@@ -28,6 +28,7 @@ declare module BABYLON.GUI {
         private _idealHeight;
         private _renderAtIdealSize;
         private _focusedControl;
+        private _blockNextFocusCheck;
         background: string;
         idealWidth: number;
         idealHeight: number;
@@ -48,6 +49,7 @@ declare module BABYLON.GUI {
         private _doPicking(x, y, type);
         attach(): void;
         attachToMesh(mesh: AbstractMesh, supportPointerMove?: boolean): void;
+        moveFocusToControl(control: IFocusableControl): void;
         private _manageFocus();
         private _attachToOnPointerOut(scene);
         static CreateForMesh(mesh: AbstractMesh, width?: number, height?: number, supportPointerMove?: boolean): AdvancedDynamicTexture;

+ 11 - 0
dist/preview release/gui/babylon.gui.js

@@ -37,6 +37,7 @@ var BABYLON;
                 _this._idealWidth = 0;
                 _this._idealHeight = 0;
                 _this._renderAtIdealSize = false;
+                _this._blockNextFocusCheck = false;
                 _this._renderObserver = _this.getScene().onBeforeCameraRenderObservable.add(function (camera) { return _this._checkUpdate(camera); });
                 _this._preKeyboardObserver = _this.getScene().onPreKeyboardObservable.add(function (info) {
                     if (!_this._focusedControl) {
@@ -353,7 +354,17 @@ var BABYLON;
                 mesh.enablePointerMoveEvents = supportPointerMove;
                 this._attachToOnPointerOut(scene);
             };
+            AdvancedDynamicTexture.prototype.moveFocusToControl = function (control) {
+                this.focusedControl = control;
+                this._lastPickedControl = control;
+                this._blockNextFocusCheck = true;
+            };
             AdvancedDynamicTexture.prototype._manageFocus = function () {
+                if (this._blockNextFocusCheck) {
+                    this._blockNextFocusCheck = false;
+                    this._lastPickedControl = this._focusedControl;
+                    return;
+                }
                 // Focus management
                 if (this._focusedControl) {
                     if (this._focusedControl !== this._lastPickedControl) {

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 3 - 3
dist/preview release/gui/babylon.gui.min.js


+ 2 - 0
dist/preview release/gui/babylon.gui.module.d.ts

@@ -33,6 +33,7 @@ declare module BABYLON.GUI {
         private _idealHeight;
         private _renderAtIdealSize;
         private _focusedControl;
+        private _blockNextFocusCheck;
         background: string;
         idealWidth: number;
         idealHeight: number;
@@ -53,6 +54,7 @@ declare module BABYLON.GUI {
         private _doPicking(x, y, type);
         attach(): void;
         attachToMesh(mesh: AbstractMesh, supportPointerMove?: boolean): void;
+        moveFocusToControl(control: IFocusableControl): void;
         private _manageFocus();
         private _attachToOnPointerOut(scene);
         static CreateForMesh(mesh: AbstractMesh, width?: number, height?: number, supportPointerMove?: boolean): AdvancedDynamicTexture;

+ 14 - 1
gui/src/advancedDynamicTexture.ts

@@ -30,6 +30,7 @@ module BABYLON.GUI {
         private _idealHeight = 0;
         private _renderAtIdealSize = false;
         private _focusedControl: IFocusableControl;
+        private _blockNextFocusCheck = false;
 
         public get background(): string {
             return this._background;
@@ -387,8 +388,20 @@ module BABYLON.GUI {
             mesh.enablePointerMoveEvents = supportPointerMove;
             this._attachToOnPointerOut(scene);
         }
-
+        
+        public moveFocusToControl(control: IFocusableControl): void {
+            this.focusedControl = control;
+            this._lastPickedControl = <any>control;
+            this._blockNextFocusCheck = true;
+        }
+        
         private _manageFocus(): void {
+            if (this._blockNextFocusCheck) {
+                this._blockNextFocusCheck = false;
+                this._lastPickedControl = <any>this._focusedControl;
+                return;
+            }
+
             // Focus management
             if (this._focusedControl) {
                 if (this._focusedControl !== (<any>this._lastPickedControl)) {