Integrated: 8218826: TableRowSkinBase: horizontal layout broken if row has padding

Marius Hanl mhanl at openjdk.org
Fri Aug 5 08:36:00 UTC 2022


On Tue, 24 May 2022 21:25:23 GMT, Marius Hanl <mhanl at openjdk.org> wrote:

> This PR fixes a problem, where the layout is broken when a `(Tree)TableRow` has padding.
> As also mentioned in the ticket, the `layoutChildren` method in `TableRowSkinBase` is implemented wrong.
> 
> The `layoutChildren` method is responsible for layouting all the `(Tree)TableCells`. 
> When the row has padding, it is subtracted on every `(Tree)TableCell` - which is wrong.
> 
> Instead the `x` and `y` from `layoutChildren` should be used. (E.g. if `x` is 10 (=padding left+right = 10), then only the first cell should start at 10 and the other cells follow as usual)
> Also the `compute...` methods needs to add the padding as well.
> 
> **Example:**
> _Row padding left right 0:_ 
> [Cell1][Cell2][Cell3]
> _Row padding left right 10:_ 
> [    10    ][Cell1][Cell2][Cell3][    10    ] (`compute...` method also needs to account the padding)
> _Same for top bottom._
> 
> When a `fixedCellSize` is set, the padding is currently ignored (also after this PR).
> Therefore, `y` in the `layoutChildren` method is set to 0 for `fixedCellSize`.
> 
> This may can be discussed in the mailing list (Could be a follow up). To support padding also when a `fixedCellSize` is set, the `compute...` methods needs to also add the padding when a `fixedCellSize` is set (in the `if` clauses) and the `VirtualFlow` needs to add the padding to every row instead of using the `fixedCellSize` directly (probably at the cost of performance).

This pull request has now been integrated.

Changeset: b4d86bdf
Author:    Marius Hanl <mhanl at openjdk.org>
URL:       https://git.openjdk.org/jfx/commit/b4d86bdffc2dd89e3473884b4079092e7e2843d1
Stats:     439 lines in 3 files changed: 417 ins; 10 del; 12 mod

8218826: TableRowSkinBase: horizontal layout broken if row has padding

Reviewed-by: aghaisas

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

PR: https://git.openjdk.org/jfx/pull/800


More information about the openjfx-dev mailing list