This PR will snap the values returned by `ScrollPaneSkin`s compute methods, and 
`Control`s `layoutChildren` method to prevent scroll bars from showing up (when 
using the `AS_NEEDED` policy) due to subtle rounding errors.  The scroll pane 
internally will compare its own height (minus insets) with its content height, 
and determine if vertical (or horizontal) scroll bar needs to be shown.  If the 
values being compared are even slightly off (by a few ulp's in floating point 
terms) then it may conclude a scroll bar should be shown when it should not be.

See the sample program and video in the related JBS ticket.

Note: in many places we forget to resnap values after seemingly innocent 
floating point calculations (even when all values involved are snapped already, 
errors can be introduced).  It is out of scope for this PR to fix all of these.

Note 2: since we only want to fix a rounding error, `snapSpace` is used and not 
`snapSize` as the latter will ceil values which would make tiny errors worse if 
they are just one ulp above the desired value.

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

Commit messages:
 - Snap sizes after subtractions/additions that can introduce subtle errors

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

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

Reply via email to