Skip to content

Commit db6941d

Browse files
committed
8256283: IndexOutOfBoundsException when sorting a TreeTableView
Reviewed-by: kcr
1 parent b0a404d commit db6941d

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

modules/javafx.controls/src/main/java/javafx/scene/control/TreeTableView.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ public static int getNodeLevel(TreeItem<?> node) {
579579
@Override public Boolean call(TreeTableView table) {
580580
try {
581581
TreeItem rootItem = table.getRoot();
582-
if (rootItem == null) return false;
582+
if (rootItem == null || rootItem.getChildren().isEmpty()) return false;
583583

584584
TreeSortMode sortMode = table.getSortMode();
585585
if (sortMode == null) return false;

modules/javafx.controls/src/test/java/test/javafx/scene/control/TreeTableViewTest.java

+26
Original file line numberDiff line numberDiff line change
@@ -753,6 +753,32 @@ private void verifySelectionAfterPermutation() {
753753
treeTableView.sort();
754754
}
755755

756+
@Test public void testNoIOOBEWhenSortingAfterSelectAndClearRootChildren() {
757+
TreeTableView<String> ttv = new TreeTableView<>();
758+
TreeItem<String> root = new TreeItem<>("root");
759+
TreeItem<String> child = new TreeItem<>("child");
760+
root.getChildren().add(child);
761+
root.setExpanded(true);
762+
ttv.setRoot(root);
763+
ttv.setShowRoot(false);
764+
765+
TreeTableColumn<String, String> ttc = new TreeTableColumn<>("Column");
766+
ttv.getSortOrder().add(ttc);
767+
768+
ttv.getSelectionModel().select(0);
769+
root.getChildren().remove(0);
770+
ControlTestUtils.runWithExceptionHandler(() -> {
771+
ttv.sort();
772+
});
773+
}
774+
775+
@Test public void testNPEWhenRootItemIsNull() {
776+
TreeTableView<String> ttv = new TreeTableView<>();
777+
ControlTestUtils.runWithExceptionHandler(() -> {
778+
ttv.sort();
779+
});
780+
}
781+
756782
@Test public void testChangingSortPolicyUpdatesItemsList() {
757783
TreeTableColumn<String, String> col = initSortTestStructure();
758784
col.setSortType(DESCENDING);

0 commit comments

Comments
 (0)