< 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 >