Skip to content

Make NVDA DPI aware #3758

Description

@nvaccessAuto

Reported by jteh on 2014-01-08 06:36
Many newer screens have higher DPI than the traditional 96 DPI. If an application isn't DPI aware, Windows will virtualise and scale the application.

Currently, NVDA isn't DPI aware. Because of the virtualisation, most of the locations we use are scaled appropriately; e.g. Win32 functions. Unfortunately, this doesn't appear to be entirely accurate, so routing the mouse often routes to the wrong position despite the scaling, causing issues such as #3703. Also, apps with custom IAccessible* implementations don't have locations virtualised.

We need to:

  1. Mark NVDA as DPI aware. We can do this via the manifest, but that doesn't work for source copies, so we will probably use the user32.SetProcessDPIAware function instead.
  2. Make display model handle DPI awareness. If the process isn't DPI aware, any coordinates need to be transposed.
  3. Make sure our GUI can cope with DPI awareness. This could be problematic if wx has DPI awareness issues. log viewer doesn't respect large fonts #356 is a problem we have already despite being DPI unaware.

One other issue is that there may be apps with custom IAccessible* implementations that are DPI unaware. That will be tricky to handle. My feeling is that we should cross that bridge when a specific case arises.
Blocked by #3782
Blocking #3703

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions