From 73ab82fc75cbbc67e492c500468ac427c73fab47 Mon Sep 17 00:00:00 2001 From: Forrest Date: Thu, 16 Jan 2025 11:26:10 -0500 Subject: [PATCH] fix(RWInteractor): async requestPointerLock --- .../MouseCameraTrackballFirstPersonManipulator/index.js | 5 +++-- .../Interaction/Manipulators/MouseRangeManipulator/index.js | 5 +++-- Sources/Rendering/Core/RenderWindowInteractor/index.d.ts | 2 +- Sources/Rendering/Core/RenderWindowInteractor/index.js | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Sources/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator/index.js b/Sources/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator/index.js index 056227a1766..a8b70b92084 100644 --- a/Sources/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator/index.js +++ b/Sources/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator/index.js @@ -25,8 +25,9 @@ function vtkMouseCameraTrackballFirstPersonManipulator(publicAPI, model) { if (model.usePointerLock && !interactor.isPointerLocked()) { Object.assign(internal, { interactor, renderer }); - interactor.requestPointerLock(); - publicAPI.startPointerLockInteraction(); + Promise.resolve(interactor.requestPointerLock()).then(() => { + publicAPI.startPointerLockInteraction(); + }); } }; diff --git a/Sources/Interaction/Manipulators/MouseRangeManipulator/index.js b/Sources/Interaction/Manipulators/MouseRangeManipulator/index.js index 261257b6687..7f70dff74d7 100644 --- a/Sources/Interaction/Manipulators/MouseRangeManipulator/index.js +++ b/Sources/Interaction/Manipulators/MouseRangeManipulator/index.js @@ -256,8 +256,9 @@ function vtkMouseRangeManipulator(publicAPI, model) { // we don't interfere with other events such as doubleClick, // for this reason we don't call this from `onButtonDown` if (model.usePointerLock && !interactor.isPointerLocked()) { - interactor.requestPointerLock(); - publicAPI.startPointerLockEvent(interactor, renderer); + Promise.resolve(interactor.requestPointerLock()).then(() => { + publicAPI.startPointerLockEvent(interactor, renderer); + }); } if (!position) { diff --git a/Sources/Rendering/Core/RenderWindowInteractor/index.d.ts b/Sources/Rendering/Core/RenderWindowInteractor/index.d.ts index 10c680c8149..9dd33ff7329 100755 --- a/Sources/Rendering/Core/RenderWindowInteractor/index.d.ts +++ b/Sources/Rendering/Core/RenderWindowInteractor/index.d.ts @@ -1198,7 +1198,7 @@ export interface vtkRenderWindowInteractor extends vtkObject { /** * */ - requestPointerLock(): void; + requestPointerLock(): Promise | undefined; /** * diff --git a/Sources/Rendering/Core/RenderWindowInteractor/index.js b/Sources/Rendering/Core/RenderWindowInteractor/index.js index c432e85ccba..595ff773130 100644 --- a/Sources/Rendering/Core/RenderWindowInteractor/index.js +++ b/Sources/Rendering/Core/RenderWindowInteractor/index.js @@ -478,8 +478,9 @@ function vtkRenderWindowInteractor(publicAPI, model) { //---------------------------------------------------------------------- publicAPI.requestPointerLock = () => { if (model.container) { - model.container.requestPointerLock(); + return model.container.requestPointerLock(); } + return undefined; }; //----------------------------------------------------------------------