On Wed, 7 Feb 2024 08:52:32 GMT, Marius Hanl <mh...@openjdk.org> wrote:
>> The PR simply moves column and view-updates outside the loop. Since the >> column or view never changes within the for-loop it is not necessary to call >> these again and again. > > modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableColumnHeader.java > line 670: > >> 668: cell.updateTableRow(tableRow); >> 669: cell.updateIndex(row); >> 670: > > we could also check if we need/can call `tableRow.applyCss();` just only one > time (below) (e.g. at first?), > May works and improve performance, or may not work That doesn't work unfortunately. I tried this: boolean tableRowHasCss = false; for (int row = 0; row < rows; row++) { tableRow.updateIndex(row); cell.updateIndex(row); if ((cell.getText() != null && !cell.getText().isEmpty()) || cell.getGraphic() != null) { if (!tableRowHasCss) { tableRow.applyCss(); tableRowHasCss = true; } maxWidth = Math.max(maxWidth, cell.prefWidth(-1)); } } but if you have a table with this css: .oddbig .table-row-cell:odd{ -fx-font-size: 36; } Then only the css of the first row will be taken into account, i.e. the column wont size correctly. I've recorded a little video of the effect at https://youtu.be/-p0pv-i4K2s ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1358#discussion_r1481219613