< prev index next >
modules/javafx.controls/src/main/java/javafx/scene/control/TreeView.java
Print this page
rev 10463 : 8089514: [TableView, TreeView, ListView, TreeTableView] Clicking outside of the edited cell, node, or entry should commit the value
*** 30,39 ****
--- 30,41 ----
import com.sun.javafx.scene.control.behavior.TreeCellBehavior;
import javafx.scene.control.skin.TreeViewSkin;
import javafx.application.Platform;
import javafx.beans.DefaultProperty;
+ import javafx.beans.InvalidationListener;
+ import javafx.beans.WeakInvalidationListener;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ObjectPropertyBase;
import javafx.beans.property.ReadOnlyIntegerProperty;
*** 334,343 ****
--- 336,354 ----
// install default selection and focus models - it's unlikely this will be changed
// by many users.
MultipleSelectionModel<TreeItem<T>> sm = new TreeViewBitSetSelectionModel<T>(this);
setSelectionModel(sm);
setFocusModel(new TreeViewFocusModel<T>(this));
+
+ sceneProperty().addListener((o, oldScene, newScene) -> {
+ if (oldScene != null) {
+ oldScene.focusOwnerProperty().removeListener(weakFocusOwnerListener);
+ }
+ if (newScene != null) {
+ newScene.focusOwnerProperty().addListener(weakFocusOwnerListener);
+ }
+ });
}
/***************************************************************************
*** 382,391 ****
--- 393,409 ----
expandedItemCountDirty = true;
requestLayout();
}
};
+ private InvalidationListener focusOwnerListener = o -> {
+ if (!ControlUtils.isFocusOnNodeOrAnyChild(this)) {
+ edit(null);
+ }
+ };
+ private WeakInvalidationListener weakFocusOwnerListener = new WeakInvalidationListener(focusOwnerListener);
+
private WeakEventHandler<TreeModificationEvent<T>> weakRootEventListener;
/***************************************************************************
< prev index next >