On Tue, 8 Nov 2022 17:39:27 GMT, Marius Hanl <[email protected]> wrote:
>> modules/javafx.graphics/src/main/java/javafx/scene/layout/AnchorPane.java
>> line 353:
>>
>>> 351:
>>> 352: if (leftAnchor != null) {
>>> 353: x = snappedLeftInset() + leftAnchor;
>>
>> Question: should we use unsnapped coordinates in the computations, and only
>> snap at the final stage?
>>
>> For example, if leftAnchor is 0.5 the child will be positioned between the
>> pixels, so to speak.
>>
>> Or is this indeed an intended functionality?
>
> Not 100% sure about this. It sounds somewhat logical. If we set the left
> anchor to be 5. Do we expect it to be 10 with a render scale of 2 -> 200%
> resolution?
Not sure about render scale - it should be done elsewhere.
As for snapping, I think this code might be incorrect - it should honor
Region.snapToPixel setting. All the intermediary computations need to use
unsnapped (original) values, then, at the last moment, call proper
Region.snap*() which either rounds or not, depending on the `snapToPixel`.
The only exception for this rule (of using snapped values in the intermediary
computations) is to ensure some kind of specific alignment, which I believe is
not the case here.
-------------
PR: https://git.openjdk.org/jfx/pull/910