RFR: 8313709: Wrong layout of a FlowPane in a BorderPane in a ScrollPane, if padding is too big [v2]
Michael Strauß
mstrauss at openjdk.org
Thu Oct 26 00:34:44 UTC 2023
On Tue, 8 Aug 2023 23:44:58 GMT, Jose Pereda <jpereda at openjdk.org> wrote:
>> So far, BorderPane does the calculation for the children min/pref width/height taken into account only the margin applied to them, if any, but not the total padding that could be applied as well to the BorderPane itself.
>>
>> However, this padding needs to be taken into account as well, and this PR modifies BorderPane to subtract its insets from its size while doing the children min/pref width/height calculations.
>>
>> A parameterized test has been included.
>>
>> It is a simplified version of the test case attached to https://bugs.openjdk.org/browse/JDK-8313709, but still shows how without this patch, two of the cases (padding with or without margin) fail, while pass with it.
>
> Jose Pereda has updated the pull request incrementally with one additional commit since the last revision:
>
> Migrate old tests to JUnit 5
modules/javafx.graphics/src/main/java/javafx/scene/layout/BorderPane.java line 414:
> 412: final Insets insets = getInsets();
> 413: if (width != -1) {
> 414: width -= (insets.getLeft() + insets.getRight());
Let's say we call `computeMinHeight(10)`, but the left and right insets are 20. This means that `width` is now -10, which probably means "ignore the value" (the spec isn't entirely clear about that, but -10 is not a valid width in any case).
I think the following code might be better:
if (width >= 0) {
width = Math.max(0, width - insets.getLeft() - insets.getRight());
}
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1203#discussion_r1372443874
More information about the openjfx-dev
mailing list