OpenJDK / openjfx / 2.2 / master / rt
changeset 1191:ced2772737ea
RT-20300: TableView is not refreshed when TableColumn are added dynamically
author | jgiles |
---|---|
date | Wed, 30 May 2012 10:51:16 +1200 |
parents | 3275052b54fa |
children | 3009735752fb |
files | javafx-ui-controls/src/com/sun/javafx/scene/control/skin/NestedTableColumnHeader.java javafx-ui-controls/src/javafx/scene/control/TableView.java |
diffstat | 2 files changed, 16 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/NestedTableColumnHeader.java Tue May 29 16:40:14 2012 +1200 +++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/NestedTableColumnHeader.java Wed May 30 10:51:16 2012 +1200 @@ -59,21 +59,21 @@ * * **************************************************************************/ - public NestedTableColumnHeader(TableView table, TableColumn tc) { + NestedTableColumnHeader(TableView table, TableColumn tc) { super(table, tc); getStyleClass().setAll("nested-column-header"); setFocusTraversable(false); initUI(); - + // watching for changes to the view columns in either table or tableColumn. if (getTableColumn() == null && getTableView() != null) { setColumns(getTableView().getColumns()); } else if (getTableColumn() != null) { setColumns(getTableColumn().getColumns()); } - getColumns().addListener(weakColumnsListener); +// getColumns().addListener(weakColumnsListener); } @@ -136,10 +136,18 @@ * It does NOT include ANY of the children of these columns, if any exist. */ private ObservableList<? extends TableColumn> columns; - public ObservableList<? extends TableColumn> getColumns() { return columns; } - public void setColumns(ObservableList<? extends TableColumn> newColumns) { + ObservableList<? extends TableColumn> getColumns() { return columns; } + void setColumns(ObservableList<? extends TableColumn> newColumns) { + if (this.columns != null) { + this.columns.removeListener(weakColumnsListener); + } + this.columns = newColumns; + if (this.columns != null) { + this.columns.addListener(weakColumnsListener); + } + // update the column headers.... // iterate through all current headers, telling them to clean up
--- a/javafx-ui-controls/src/javafx/scene/control/TableView.java Tue May 29 16:40:14 2012 +1200 +++ b/javafx-ui-controls/src/javafx/scene/control/TableView.java Wed May 30 10:51:16 2012 +1200 @@ -679,9 +679,6 @@ // set up listeners removeTableColumnListener(c.getRemoved()); addTableColumnListener(c.getAddedSubList()); - - removeColumnsListener(c.getRemoved(), weakColumnsObserver); - addColumnsListener(c.getAddedSubList(), weakColumnsObserver); } // We don't maintain a bind for leafColumns, we simply call this update @@ -762,6 +759,9 @@ // Fix for RT-15194: Need to remove removed columns from the // sortOrder list. while (c.next()) { + removeColumnsListener(c.getRemoved(), weakColumnsObserver); + addColumnsListener(c.getAddedSubList(), weakColumnsObserver); + if (c.wasRemoved()) { for (int i = 0; i < c.getRemovedSize(); i++) { getSortOrder().remove(c.getRemoved().get(i));