> Fixes the case where `VBox` will ignore the (horizontal) bias of a child when > its fill width property is set to `false`. This manifests itself with labels > that have their wrap text property set to `true`, and the container is not > wide enough to hold the text on a single line (in other words, the label is > potentially far wider, and fill width should have no effect). No reflow > would occur before this fix. > > The solution is to ensure the `computeChildAreaMin/Pref/MaxHeight` functions > are provided with a `fillWidth` parameter, to be used in the case a > horizontally biased control is encountered (several of the parameters to > these compute functions are only used for those special cases and ignored > otherwise). > > With this additional information, the compute functions can decide between > the preferred width of a control or the available width of the container. In > the old implementation this decision was made *before* these functions were > called, and the available width was reset to -1 to indicate the case that the > preferred width should be used. However, there are three cases, and so > setting a single parameter to -1 can't effectively communicate that: > > Assuming a control that is horizontally biased, and is resizable there are > three cases when calculating a **height**: > > 1. There is no available width: bias is ignored (as there is no value to use > as a dependent value) and the height is then simply calculated ignoring > available width (which is -1) and fill width settings (same as unbiased > controls). > 2. There is an available width and fill width is false; the bias logic must > first find a reasonable width before it can call any height function; with > fill width false, this reasonable width will be the preferred width of the > control, unless it exceeds its maximum width or the available width, in which > case the smallest of these three values is used. The final width calculated > is then used to determine the height. > 3. There is an available width and fill width is true; this is the same as > case 2, except the available width is used as a dependent value (unless its > greater than the child's maximum width, in which case the smaller is used). > The final width calculated is then used to determine the height. > > All in all, this PR removes several inconsistencies between horizontal and > vertical computations. The end result is that the horizontal and vertical > bias calculations now more closely mirror each other. > > **Note**: some tests have had their values adjusted. This is becaus...
John Hendrikx has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision: - Merge branch 'openjdk:master' into feature/vbox-fillwidth-bug-fix - Make computeChildMin/Pref/MaxAreaHeight accept a fillWidth parameter ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1723/files - new: https://git.openjdk.org/jfx/pull/1723/files/33500bab..b55c20e9 Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1723&range=01 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1723&range=00-01 Stats: 779078 lines in 8295 files changed: 648376 ins; 72616 del; 58086 mod Patch: https://git.openjdk.org/jfx/pull/1723.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1723/head:pull/1723 PR: https://git.openjdk.org/jfx/pull/1723