RFR: 8350149: VBox ignores bias of child controls when fillWidth is set to false [v3]
John Hendrikx
jhendrikx at openjdk.org
Fri Feb 28 21:26:58 UTC 2025
On Mon, 24 Feb 2025 20:54:05 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> Yeah, or possibly zero included. What I meant here is that these are **real** values, and don't have a "special" value `-1` meaning absent/unavailable.
>
> A _very quick_ test with the monkey tester showed it never entered `boundedSize()` with zero values, but I can't be sure (I've seen 0's in `layoutChildren()`).
>
> The statement about "never -1" is even more suspect below when margins are subtracted...
>
> I just wanted to point this out because I am not entirely sure that we'll never receive 0 width/height.
There are a few guards in the code that prevent these values from becoming negative (as some negative values have special meanings). See for example this code:
@Override public final double minWidth(double height) {
final double override = getMinWidth();
if (override == USE_COMPUTED_SIZE) {
return super.minWidth(height);
} else if (override == USE_PREF_SIZE) {
return prefWidth(height);
}
return Double.isNaN(override) || override < 0 ? 0 : override;
}
This method is `final`, to prevent anyone from messing with this logic. And as you can see, the `override` value (which comes from calling `computeMinWidth` for example) is checked against special values, and other values are returned instead. If it is not any special value, it is guarded against negative (it becomes 0) and against `NaN`.
Whether that truly guarantees we'll never see negative values, I'm not 100% sure off, but I think that's definitely the intent as specific negative values have special meanings. So I think I'll document these as `cannot be negative`.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1723#discussion_r1976024980
More information about the openjfx-dev
mailing list