RFR: 8199592: Control labels truncated at certain DPI scaling levels

Jose Pereda jpereda at openjdk.java.net
Fri Oct 23 08:36:44 UTC 2020


As discussed in the [JBS issue](https://bugs.openjdk.java.net/browse/JDK-8199592), when snapping an already snapped value (either intentionally or by  mistake), the result should be the same, otherwise we'll be jumping unnecessary from a valid pixel to another pixel.

This PR provides a fix to `snapSizeXX` methods used in `Region`, which ultimately use `Math.ceil`, by subtracting an epsilon value to scaled value before ceiling, to ensure snapping a snapped value gives the same value.

A test to verify `snapSizeX` and `snapSizeY` with 1000 random values, and 6 different UI scales is provided.
For the 1.0, 1.25, 1.5 and 2.0 UI scales, the current approach works fine. Only for 1.75 and the random 1.374562997 value fails (the test fails for around 2% of the values with 1.75 and around 10% with 1.374562997).
With the proposed fix, it doesn't fail at all.

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

Commit messages:
 - Subtract epsilon to scaled value before ceiling, to ensure snapping a snapped value gives the same value. Include test

Changes: https://git.openjdk.java.net/jfx/pull/336/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=336&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8199592
  Stats: 35 lines in 2 files changed: 34 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jfx/pull/336.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/336/head:pull/336

PR: https://git.openjdk.java.net/jfx/pull/336


More information about the openjfx-dev mailing list