RFR: JDK-8313628: Column drag header, overlay and line are not correctly aligned
Marius Hanl
mhanl at openjdk.org
Fri Aug 4 07:38:42 UTC 2023
On Thu, 3 Aug 2023 23:02:29 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> When a table has padding or the `layoutChildren` method inside the table skin is overridden (and x/y are modified), the drag drag header, column overlay and column line are not correctly aligned.
>>
>> The reason is that the positions were calculated incorrectly.
>> - **Column overlay and column line**
>> Always calculate in the x and y from the table. The x and y variables contain the snapped insets (padding) and possible modifications from subclasses.
>> - **Drag header**
>> Calculate the drag x offset local bounds from the parent header (which is either the parent column header or the root header)
>> Before, the local bounds were calculated from the table, which will wrongly calculate in the padding.
>> We do not want to know the local bounds based of the whole table but of our header we are in.
>
> modules/javafx.controls/src/test/java/test/javafx/scene/control/skin/TableViewSkinTest.java line 79:
>
>> 77: @Test
>> 78: void testInitialColumnResizeNodePositions() {
>> 79: TableView<String> tableView = new TableView<>();
>
> question: would it make sense to test with scene scale(s) other than 100%? just to see if there is no failures with fractional scales?
> (the asserts would need to use non-0 tolerance)
It probably won't hurt. But since the mismatch is visible even at a normal scale, I didn't bothered to do so.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1193#discussion_r1284088011
More information about the openjfx-dev
mailing list