When using the Windows Narrator screen reader on a Hi-DPI screen, the visible 
focus is drawn in the wrong location and with the wrong size. This happens 
because the the JavaFX Windows accessibility code that returns the screen 
bounds of the requested UI element does not take the screen scale into account.

The fix is to adjust the bounds by the screen scale before returning it.

You can test it on a Windows machine with scaling set to >= 125% as follows:
1. Turn on Windows Narrator
2. Run any JavaFX program with at least UI controls, for example, 
`hello.HelloTextField` in `apps/toys/Hello`
3. TAB between the controls

Without the fix, Narrator shows the focus indicator in the wrong position and 
is too small. With the fix, it is correct. While testing this, I discovered an 
unrelated (and preexisting) bug where the focus indicator for a TextField or 
TextArea whose content is larger that the control (and is displayed with scroll 
bars) is not clipped to the visible area. This happens regardless of screen 
scale. I will file a follow-up bug for this.

Note that this bug is specific to Windows. It does not occur on macOS, which 
works correctly on a retina or non-retina display.

-------------

Commit messages:
 - 8291087: Wrong position of focus of screen reader on Windows with screen 
scale > 1

Changes: https://git.openjdk.org/jfx/pull/853/files
 Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=853&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8291087
  Stats: 32 lines in 2 files changed: 26 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jfx/pull/853.diff
  Fetch: git fetch https://git.openjdk.org/jfx pull/853/head:pull/853

PR: https://git.openjdk.org/jfx/pull/853

Reply via email to