On Wed, 14 Dec 2022 10:03:29 GMT, Johan Vos <j...@openjdk.org> wrote:
> When recalculating sizes, we often don't want the current index and/or offset > to change. > > Allow to fix the index/offset when doing recalculations. > > Fix JDK-8298728 I am trying to understand what the behavioral difference is between this branch and the current master. The ticket JDK-8298728 does not seem to specify the exact scenario, so I tried the following code with the large model (3000 lines) with a wrapping Text as graphic node. Resizing both vertically and horizontally produces what I this is identical result where the top visible selected cell scrolls out of the view in both cases. cell factory: TableColumn<String,String> c = new TableColumn<>(); table.getColumns().add(c); c.setText("C" + table.getColumns().size()); c.setCellValueFactory((f) -> new SimpleStringProperty(describe(c))); c.setCellFactory((r) -> { return new TableCell<>() { @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); Text t = new Text("11111111111111111111111111111111111111111111111111111111111111111111111111111111111111\n2\n3\n"); t.wrappingWidthProperty().bind(widthProperty()); setPrefHeight(USE_COMPUTED_SIZE); setGraphic(t); } }; }); I can attache the whole program to the jira ticket. modules/javafx.controls/src/main/java/javafx/scene/control/skin/VirtualFlow.java line 2327: > 2325: double cellLength = getOrCreateCellSize(index); > 2326: if (index > 0) getOrCreateCellSize(index - 1); > 2327: if (index < getCellCount() -1) getOrCreateCellSize(index + 1); I think it's better to keep one statement per line - for stepping through in a debugger, and also if an exception gets thrown it will be easier to see where. ------------- PR: https://git.openjdk.org/jfx/pull/974