RFR: 8366739: ToolBar: overflow menu with fractional scale (2) [v4]

John Hendrikx jhendrikx at openjdk.org
Tue Dec 23 14:17:54 UTC 2025


On Tue, 23 Dec 2025 13:26:36 GMT, Cormac Redmond <duke at openjdk.org> wrote:

>> Fix overflow menu triggering due to floating-point precision error.
>> 
>> At 1.25 display scaling on Windows, floating-point comparison errors (e.g. 109.60000000000001 > 109.6) cause the overflow menu to appear when the lefthand value is regarded as larger than the righthand value.
>> 
>> These should be treated as equal (and therefore not display the overflow menu).
>> 
>> This bug can happen in both horizontal and vertical toolbar orientation.
>> 
>> The new tests added fail without this fix, and pass with it. An existing test has been re-factored slightly to allow re-use and more flexibility in specifying the scene's root node.
>
> Cormac Redmond has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8366739: minor test comment improvement

modules/javafx.controls/src/main/java/javafx/scene/control/skin/ToolBarSkin.java line 702:

> 700:                 } else {
> 701:                     x = snapPositionX(x + snapSizeX(node.prefWidth(-1)) + getSpacing());
> 702:                     length = snapPositionX(length);

Two things here:

- You're snapping `length` each time through the loop, I would just put that outside the loop
- You're modifying an argument to the method; it might be clearer to use `snappedLength` here (but that's just me, I don't like modifying arguments to methods).

If you're worried about the `getSkinnable` and `getOrientation` call, these should be constant through-out this loop (so that can be factored out as well if you want).

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

PR Review Comment: https://git.openjdk.org/jfx/pull/2016#discussion_r2643339618


More information about the openjfx-dev mailing list