RFR: 8211294: ScrollPane content is blurry with 125% scaling
Frederic Thevenet
fthevenet at openjdk.java.net
Wed Dec 16 12:57:57 UTC 2020
On Wed, 16 Dec 2020 00:42:24 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> For completeness, here is the patch for the snap-to-pixel issue:
>>
>> diff --git a/modules/javafx.graphics/src/main/java/javafx/scene/layout/Region.java b/modules/javafx.graphics/src/main/java/javafx/scene/layout/Region.java
>> index 565d52b516..00c0f6da61 100644
>> --- a/modules/javafx.graphics/src/main/java/javafx/scene/layout/Region.java
>> +++ b/modules/javafx.graphics/src/main/java/javafx/scene/layout/Region.java
>> @@ -989,17 +989,11 @@ public class Region extends Parent {
>> /** Called to update the cached snapped insets */
>> private void updateSnappedInsets() {
>> final Insets insets = getInsets();
>> - if (_snapToPixel) {
>> - snappedTopInset = Math.ceil(insets.getTop());
>> - snappedRightInset = Math.ceil(insets.getRight());
>> - snappedBottomInset = Math.ceil(insets.getBottom());
>> - snappedLeftInset = Math.ceil(insets.getLeft());
>> - } else {
>> - snappedTopInset = insets.getTop();
>> - snappedRightInset = insets.getRight();
>> - snappedBottomInset = insets.getBottom();
>> - snappedLeftInset = insets.getLeft();
>> - }
>> + final boolean snap = isSnapToPixel();
>> + snappedTopInset = snapSizeY(insets.getTop(), snap);
>> + snappedRightInset = snapSizeX(insets.getRight(), snap);
>> + snappedBottomInset = snapSizeY(insets.getBottom(), snap);
>> + snappedLeftInset = snapSizeX(insets.getLeft(), snap);
>> }
>>
>> /**
>>
>> We will need a test case for this. You can see [UIRenderSceneTest.java](https://github.com/openjdk/jfx/blob/master/tests/system/src/test/java/test/javafx/scene/UIRenderSceneTest.java) for an example of a test that forces Hi-DPI scaling.
>
> In looking at the other instances where snap-to-pixel is done correctly for Insets, the above should use `snapSpace{X,Y}` rather than `snapSize{X,Y}`
I agree that it is better to separate the scrollpane issue from the cache rendering one.
I've reverted my initial changes and applied the changes you proposed (using snapSpaceX/Y as suggested in your latest comment).
I'll also add a test case soon.
-------------
PR: https://git.openjdk.java.net/jfx/pull/308
More information about the openjfx-dev
mailing list