diff --git a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TreeViewSkin.java b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TreeViewSkin.java --- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TreeViewSkin.java +++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TreeViewSkin.java @@ -39,6 +39,7 @@ import com.sun.javafx.scene.control.WeakEventHandler; import com.sun.javafx.scene.control.behavior.TreeViewBehavior; import java.lang.ref.WeakReference; +import javafx.event.EventType; import javafx.scene.control.*; import javafx.util.Callback; @@ -169,6 +170,18 @@ // Fix for RT-14971 and RT-15338. needCellsRecreated = true; requestLayout(); + } else { + // Fix for RT-20090. We are checking to see if the event coming + // from the TreeItem root is an event where the count has changed. + EventType eventType = e.getEventType(); + while (eventType != null) { + if (eventType.equals(TreeItem.treeItemCountChangeEvent())) { + needItemCountUpdate = true; + requestLayout(); + break; + } + eventType = eventType.getSuperType(); + } } } }; @@ -211,12 +224,7 @@ // memory leak in VirtualFlow.sheet.children. This can probably be // optimised in the future when time permits. flow.setCellCount(newCount); - - if (newCount != oldCount) { - flow.recreateCells(); - } else { - flow.reconfigureCells(); - } + flow.recreateCells(); } @Override public TreeCell createCell() {