--- old/modules/swing/src/main/java/javafx/embed/swing/SwingNode.java 2013-09-03 18:06:41.000000000 +0400 +++ new/modules/swing/src/main/java/javafx/embed/swing/SwingNode.java 2013-09-03 18:06:41.000000000 +0400 @@ -40,8 +40,7 @@ import javafx.beans.value.ObservableValue; import javafx.event.EventHandler; import javafx.geometry.Point2D; -import javafx.scene.Node; -import javafx.scene.Scene; +import javafx.scene.*; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseButton; @@ -135,7 +134,7 @@ focusedProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Boolean oldValue, final Boolean newValue) { - activateLwFrame(newValue); + activateLwFrame(newValue); } }); } @@ -641,6 +640,10 @@ } }); } + @Override + public void invokeOnContentsThread(Runnable runnable) { + Platform.runLater(runnable); + } } private void ungrabFocus(boolean postUngrabEvent) { @@ -672,7 +675,12 @@ private class SwingMouseEventHandler implements EventHandler { @Override public void handle(MouseEvent event) { - if (event.getEventType() == MouseEvent.MOUSE_PRESSED && + // Disable the FX cursor updates when mouse enters SwingNode and enable bask when exits + if (event.getEventType() == MouseEvent.MOUSE_ENTERED) { + getScene().getWindow().impl_getPeer().setUpdatesCursor(false); + } else if (event.getEventType() == MouseEvent.MOUSE_EXITED) { + getScene().getWindow().impl_getPeer().setUpdatesCursor(true); + } else if (event.getEventType() == MouseEvent.MOUSE_PRESSED && !SwingNode.this.isFocused() && SwingNode.this.isFocusTraversable()) { SwingNode.this.requestFocus();