< prev index next >
modules/javafx.controls/src/main/java/javafx/scene/control/TreeTableView.java
Print this page
rev 10463 : 8089514: [TableView, TreeView, ListView, TreeTableView] Clicking outside of the edited cell, node, or entry should commit the value
@@ -401,10 +401,19 @@
}
getProperties().remove(TableView.SET_CONTENT_WIDTH);
}
});
+ sceneProperty().addListener((o, oldScene, newScene) -> {
+ if (oldScene != null) {
+ oldScene.focusOwnerProperty().removeListener(weakFocusOwnerListener);
+ }
+ if (newScene != null) {
+ newScene.focusOwnerProperty().addListener(weakFocusOwnerListener);
+ }
+ });
+
isInited = true;
}
@@ -863,10 +872,17 @@
boolean isCellSelection = ((BooleanProperty)o).get();
pseudoClassStateChanged(PSEUDO_CLASS_CELL_SELECTION, isCellSelection);
pseudoClassStateChanged(PSEUDO_CLASS_ROW_SELECTION, !isCellSelection);
};
+ private InvalidationListener focusOwnerListener = o -> {
+ if (!ControlUtils.isFocusOnNodeOrAnyChild(this)) {
+ edit(-1, null);
+ }
+ };
+ private WeakInvalidationListener weakFocusOwnerListener = new WeakInvalidationListener(focusOwnerListener);
+
private WeakEventHandler<TreeItem.TreeModificationEvent<S>> weakRootEventListener;
private final WeakInvalidationListener weakColumnVisibleObserver =
new WeakInvalidationListener(columnVisibleObserver);
< prev index next >