On Tue, 8 Aug 2023 23:44:58 GMT, Jose Pereda <jper...@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

Reply via email to