On Wed, 20 Mar 2024 19:53:40 GMT, Marius Hanl <mh...@openjdk.org> wrote:

>> This PR fixes the issue that the initial column autosizing is wrong under 
>> some circumstances.
>> The following things will break the initial autosizing:
>> - Bold Column text (that is where I initially found this problem)
>> - Another font / font size
>> - Graphic
>> 
>> The reason is actually quite simple: The CSS is not (yet) applied initially, 
>> we therefore ALWAYS take the default font into account + the graphic is not 
>> yet layouted as well.
>> 
>> _It was not so easy to write tests for this, also for me the 
>> `test_resizeColumnToFitContentHeader` is always failing locally. I don't 
>> know what happens here, but he seems to not find a (Stub?) `Font` for me._
>> **EDIT: Found out the cause and fixed it. I will check if I can write more 
>> tests since it works now. :)**
>> 
>> The test I wrote now is checking if the css is applied after we triggered 
>> the autosize, which is what we would expect here since we measure text.
>> 
>> I also copied the `TableColumnHeaderTest` and rewrote the tests for 
>> `TreeTableView` as well, so we can catch any errors here as well since they 
>> both use different code (although it is technically the same - C&P errors 
>> can happen very easy).
>
> Marius Hanl has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - JDK-8186188: copyright
>  - JDK-8186188: fix tests

the main question is whether this PR depends on #1422, or whether the unrelated 
changes need to be removed.

modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableColumnHeader.java
 line 686:

> 684:         TableColumnHeader header = 
> tableSkin.getTableHeaderRow().getColumnHeaderFor(tc);
> 685:         header.applyCss();
> 686:         double headerWidth = header.label.prefWidth(-1) + 10;

should we extract this magic constant (along with the comment)?
although this might be outside of the scope of this PR, lines 651, 744.

modules/javafx.controls/src/test/java/test/javafx/scene/chart/AreaChartTest.java
 line 537:

> 535:                 .map(pathElement -> (LineTo) pathElement)
> 536:                 .map(lineTo -> new Point2D(
> 537:                         
> Math.round(xAxis.getValueForDisplay(lineTo.getX()).doubleValue()),

please revert the unrelated changes (moved to #1422)

modules/javafx.controls/src/test/java/test/javafx/scene/chart/StackedBarChartTest.java
 line 111:

> 109:         String bounds = computeBoundsString((Region)childrenList.get(0), 
> (Region)childrenList.get(1),
> 110:                 (Region)childrenList.get(2));
> 111:         assertEquals("10 453 218 35 238 409 218 79 465 355 218 133 ", 
> bounds);

unrelated

modules/javafx.controls/src/test/java/test/javafx/scene/control/TextInputControlTest.java
 line 158:

> 156:         Scene s = new Scene(textInput);
> 157:         textInput.applyCss();
> 158:         assertEquals(Font.font("Amble", 24), textInput.getFont());

unrelated

modules/javafx.controls/src/test/java/test/javafx/scene/control/skin/TableColumnHeaderTreeTableTest.java
 line 48:

> 46: import javafx.scene.layout.HBox;
> 47: import javafx.scene.text.Text;
> 48: import org.junit.After;

this is a new test - should we use JUnit5?

modules/javafx.controls/src/test/java/test/javafx/scene/control/skin/TableColumnHeaderTreeTableTest.java
 line 64:

> 62:     private TableColumnHeader firstColumnHeader;
> 63:     private TreeTableView<Person> tableView;
> 64:     private StageLoader sl;

minor: this field should probably be named `stageLoader`

modules/javafx.controls/src/test/java/test/javafx/scene/control/skin/TableColumnHeaderTreeTableTest.java
 line 153:

> 151: 
> 152:         assertEquals("Width must be the same",
> 153:                 width, column.getWidth(), 0.001);

maybe a constant, here and elsewhere

private static final double EPSILON = 0.001;

?

modules/javafx.graphics/src/test/java/test/com/sun/javafx/pgstub/StubFontLoader.java
 line 53:

> 51:         if (name.equals("system regular")) {
> 52:             FontHelper.setNativeFont(font, nativeFont, font.getName(), 
> "System", "Regular");
> 53:         } else if (name.equals("system bold")) {

does this mean this PR requires #1422 to be integrated first?

-------------

PR Review: https://git.openjdk.org/jfx/pull/1405#pullrequestreview-1955910101
PR Review Comment: https://git.openjdk.org/jfx/pull/1405#discussion_r1536295365
PR Review Comment: https://git.openjdk.org/jfx/pull/1405#discussion_r1536296972
PR Review Comment: https://git.openjdk.org/jfx/pull/1405#discussion_r1536297127
PR Review Comment: https://git.openjdk.org/jfx/pull/1405#discussion_r1536297778
PR Review Comment: https://git.openjdk.org/jfx/pull/1405#discussion_r1536298798
PR Review Comment: https://git.openjdk.org/jfx/pull/1405#discussion_r1536299480
PR Review Comment: https://git.openjdk.org/jfx/pull/1405#discussion_r1536300462
PR Review Comment: https://git.openjdk.org/jfx/pull/1405#discussion_r1536315771

Reply via email to