MicrosoftEdge / MicrosoftEdge/WebView2Feedback

[Problem/Bug]: Gamepad and Pointer Lock APIs not working in visual or "Window to visual" hosting modes

Open
#4,968 5 comments 2 reactions 1 assignee View on GitHub

Nobody has claimed this yet.

bug
Dominant language
PowerShell
Stars
526
Forks
67
PR merge metrics
No merged PRs in 30d

Description

What happened?

When WebView2 is set to use "Window to visual" hosting mode, the Pointer Lock API no longer works correctly in web content.

This is a potential blocker for Construct migrating from NW.js to WebView2.

Importance

Important. My app's user experience is significantly compromised.

Runtime Channel

Stable release (WebView2 Runtime)

Runtime Version

131.0.2903.70

SDK Version

1.0.2903.40

Framework

Win32

Operating System

Windows 11

OS Version

22631.4460

Repro steps

For a minimal repro, use the Win32_GettingStarted sample, and make the following changes:

  1. Add the following line before CreateCoreWebView2EnvironmentWithOptions() to set "Window to visual" hosting mode:

SetEnvironmentVariable(L"COREWEBVIEW2_FORCED_HOSTING_MODE", L"COREWEBVIEW2_HOSTING_MODE_WINDOW_TO_VISUAL");

  1. Change the URL in the call to webview->Navigate(...) to: https://downloads.scirra.com/labs/bugs/pointerlocktest.html

Now run the app and click 'Get pointer lock'.

Observed result: the mouse cursor remains visible, and the page does not update with any more pointermove events. Further, the notification saying "to show your cursor, press Esc" appears offset, sometimes outside the window (ideally we would hide this notification as it's not applicable to desktop software - see #4960). Further, after pressing Esc pointer events don't seem to restart again, leaving the app in a stuck state.

Expected result: pointer lock to work normally as it does in a web browser, or in the standard windowed hosting mode. Comment out the line added in step 1 to use windowed hosting mode, and you'll see it works correctly.

Repros in Edge Browser

No, issue does not reproduce in the corresponding Edge version

Regression

No, this never worked

Last working version (if regression)

No response

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.