Skip to content

Commit bf36de5

Browse files
committed
fix focus
1 parent 7be9f2e commit bf36de5

1 file changed

Lines changed: 22 additions & 11 deletions

File tree

src/three/renderer/controls/EnvironmentControls.js

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,15 @@ export class EnvironmentControls extends EventDispatcher {
340340
this.pointerTracker.domElement = domElement;
341341
domElement.style.touchAction = 'none';
342342

343+
// Ensure the element can receive keyboard focus. If no tabindex attribute is
344+
// present, set it to -1 so the element is programmatically focusable without
345+
// being inserted into the tab order.
346+
if ( ! domElement.hasAttribute( 'tabindex' ) ) {
347+
348+
domElement.tabIndex = - 1;
349+
350+
}
351+
343352
const contextMenuCallback = e => {
344353

345354
// exit early if the controls are disabled
@@ -355,15 +364,6 @@ export class EnvironmentControls extends EventDispatcher {
355364

356365
const pointerdownCallback = e => {
357366

358-
// exit early if the controls are disabled
359-
if ( ! this.enabled ) {
360-
361-
return;
362-
363-
}
364-
365-
e.preventDefault();
366-
367367
const {
368368
camera,
369369
raycaster,
@@ -378,6 +378,17 @@ export class EnvironmentControls extends EventDispatcher {
378378
_keysDown,
379379
} = this;
380380

381+
382+
// exit early if the controls are disabled
383+
if ( ! this.enabled ) {
384+
385+
return;
386+
387+
}
388+
389+
e.preventDefault();
390+
domElement.focus();
391+
381392
// init the pointer
382393
pointerTracker.addPointer( e );
383394
this.needsUpdate = true;
@@ -717,7 +728,7 @@ export class EnvironmentControls extends EventDispatcher {
717728

718729
};
719730

720-
window.addEventListener( 'keydown', keydownCallback );
731+
domElement.addEventListener( 'keydown', keydownCallback );
721732
window.addEventListener( 'keyup', keyupCallback );
722733
window.addEventListener( 'blur', blurCallback );
723734

@@ -731,7 +742,7 @@ export class EnvironmentControls extends EventDispatcher {
731742
document.removeEventListener( 'pointerup', pointerupCallback );
732743
document.removeEventListener( 'pointerleave', pointerleaveCallback );
733744

734-
window.removeEventListener( 'keydown', keydownCallback );
745+
domElement.removeEventListener( 'keydown', keydownCallback );
735746
window.removeEventListener( 'keyup', keyupCallback );
736747
window.removeEventListener( 'blur', blurCallback );
737748

0 commit comments

Comments
 (0)