nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.08k stars 626 forks source link

Screen layout cannot be turned off on WWAHost applications #13760

Open OzancanKaratas opened 2 years ago

OzancanKaratas commented 2 years ago

Steps to reproduce:

  1. Download Netflix app from Microsoft Store.
  2. Open Netflix and navigate using arrow keys.
  3. Screen layout is used and NVDA cannot treat its own shortcuts.
  4. Press NVDA+v to turn screen layout off.
  5. It will not work as it should.

    Actual behavior:

    Screen layout can be turned on or off.

    Expected behavior:

    NVDA should handle the WWAHost apps like a Chromium app.

    System configuration

    NVDA installed/portable/running from source:

    Installed

    NVDA version:

    alpha-25478,841925b7

    Windows version:

    Windows 11

    Name and version of other software in use when reproducing the issue:

    Any WWAHost app

    Other information about your system:

    Not needed

    Other questions

    Does the issue still occur after restarting your computer?

    Yes

    Have you tried any other versions of NVDA? If so, please report their behaviors.

    Yes, all NVDA versions are the same.

    If NVDA add-ons are disabled, is your problem still occurring?

    I don't use any add-ons.

    Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

    Yes

feerrenrut commented 2 years ago

In this case Netflix is a UWP (I think using 'webview1'), on Edge (Spartan - pre chromium) Virtual buffers aren't supported here so we aren't able to support turning off screen layout.

Note that NVDA reports "Not supported in this document" when toggling screen layout.

There is perhaps a documentation issue, to set users expectations. We won't be supporting turning off screen layout in this situation, without a virtual buffer this would have a prohibitive performance cost. To write a virtual buffer implementation for UIA (required for edge spartan) is a large project. We intend to move away from relying on virtual buffers in the longer term. Additionally we expect edge spartan usage to be phased out and replaced with Edge - Anaheim (chromium based).

I'll mark this as triaged, we will accept a PR to update the docs and potentially the label for the option to make it more clear.

OzancanKaratas commented 2 years ago

@feerrenrut said:

We intend to move away from relying on virtual buffers in the longer term.

What do we intend to use instead of virtual buffers?

feerrenrut commented 2 years ago

This may vary, but generally software on Windows is moving towards UIA. Injecting into other processes (to use IA2 without a cross process performance hit) is a security concern for the OS. Instead, there are now ways to batch up many UIA calls together and have them all answered at once, resulting in a single cross process call. This removes the need for injecting into the process.

That said, it's early days. We may need a some kind of concept similar to the virtual buffer to cache the results.

Note that the UIA implementation in older Edge Spartan (pre chromium), is different from the UIA implementation in Edge Anaheim (chromium based). It is hard to justify spending time to add code to support this older browser that has already been replaced.

josephsl commented 2 years ago

Hi,

Also, remember that apps hosted inside WWA Host are treated as applications by NVDA (I was the last person to make changes to that app module). In this situation, focus mode is used by default.

Thanks.

Adriani90 commented 2 months ago

@OzancanKaratas are you still having this issue with NVDA 2024.3 Beta or 2024.2 Stable?