RFR: JDK-8320444: Column drag header is positioned wrong for nested columns

Andy Goryachev angorya at openjdk.org
Tue Nov 21 17:31:21 UTC 2023


On Tue, 21 Nov 2023 13:42:05 GMT, Karthik P K <kpk at openjdk.org> wrote:

>> When a nested column is dragged, the column drag header (blue) is positioned wrong.
>> It appears at the very left of the table and not where the column is.
>> 
>> ![image](https://github.com/openjdk/jfx/assets/66004280/6c2a0f61-f32d-4c38-9549-e2e20f5bd4f8)
>> 
>> The fix is to calculate the bound based off the `TableHeaderRow` (and not the parent `NestedTableColumnHeader`.
>
> modules/javafx.controls/src/test/java/test/javafx/scene/control/skin/TableViewSkinTest.java line 225:
> 
>> 223:         TableColumnHeaderShim.columnReordering(tableColumnHeader, bounds.getMinX() + 20, bounds.getMinY());
>> 224: 
>> 225:         // 200, since we have 2 columns to the left with a size of 100.
> 
> Can you also add why assertion is done for 220 in this comment?

good point.

May I suggest to declare constants for column widths and column reordering coordinates so the origin of these numbers becomes clear?
Also, we are comparing floating point numbers, so perhaps it's better specify a small delta:

double CWIDTH = 100;
double EPSILON = 0.0001;
assertEquals(CWIDTH + CWIDTH + OFFSET, columnDragHeader.getTranslateX(), EPSILON);

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1292#discussion_r1400936411


More information about the openjfx-dev mailing list