|
90 | 90 | editor.appWindowPointerLockMove(dx, dy); |
91 | 91 | } catch (_) {} |
92 | 92 | } |
| 93 | + function abortSoftwareCursorWrap() { |
| 94 | + softwareCursorVisible = false; |
| 95 | + updateMouseCursor("Default"); |
| 96 | + try { |
| 97 | + editor.onKeyDown("Escape", 0, false); |
| 98 | + editor.onKeyUp("Escape", 0, false); |
| 99 | + } catch (_) {} |
| 100 | + } |
93 | 101 | function handlePointerLockChange() { |
94 | 102 | if (!softwareCursorVisible) return; |
95 | 103 | if (isWeb && !window.document.pointerLockElement) { |
96 | | - try { |
97 | | - editor.onKeyDown("Escape", 0, false); |
98 | | - editor.onKeyUp("Escape", 0, false); |
99 | | - } catch (_) {} |
| 104 | + abortSoftwareCursorWrap(); |
100 | 105 | } |
101 | 106 | } |
102 | 107 |
|
|
559 | 564 | try { |
560 | 565 | const maybePromise = viewport.requestPointerLock?.() as unknown as Promise<void> | undefined; |
561 | 566 | if (maybePromise && typeof (maybePromise as Promise<void>).catch === "function") { |
562 | | - (maybePromise as Promise<void>).catch(() => { |
563 | | - softwareCursorVisible = false; |
564 | | - updateMouseCursor("Default"); |
565 | | - try { |
566 | | - editor.onKeyDown("Escape", 0, false); |
567 | | - editor.onKeyUp("Escape", 0, false); |
568 | | - } catch (_) {} |
569 | | - }); |
| 567 | + (maybePromise as Promise<void>).catch(() => abortSoftwareCursorWrap()); |
570 | 568 | } |
571 | 569 | } catch (_) { |
572 | | - softwareCursorVisible = false; |
573 | | - updateMouseCursor("Default"); |
574 | | - try { |
575 | | - editor.onKeyDown("Escape", 0, false); |
576 | | - editor.onKeyUp("Escape", 0, false); |
577 | | - } catch (_) {} |
| 570 | + abortSoftwareCursorWrap(); |
578 | 571 | } |
579 | 572 | } else if (!data.visible && window.document.pointerLockElement === viewport) { |
580 | 573 | try { |
|
0 commit comments