modules/swing/src/main/java/javafx/embed/swing/SwingNode.java
Print this page
@@ -38,12 +38,11 @@
import javafx.beans.Observable;
import javafx.beans.value.ChangeListener;
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;
import javafx.scene.input.MouseEvent;
import javafx.stage.Window;
@@ -639,10 +638,14 @@
SwingNode.this.minHeight = height;
SwingNode.this.impl_notifyLayoutBoundsChanged();
}
});
}
+ @Override
+ public void invokeOnContentsThread(Runnable runnable) {
+ Platform.runLater(runnable);
+ }
}
private void ungrabFocus(boolean postUngrabEvent) {
if (grabbed &&
getScene() != null &&
@@ -670,11 +673,16 @@
}
private class SwingMouseEventHandler implements EventHandler<MouseEvent> {
@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();
}
JLightweightFrame frame = lwFrame;