src/windows/classes/sun/awt/windows/WGlobalCursorManager.java
Print this page
@@ -25,10 +25,12 @@
package sun.awt.windows;
import java.awt.*;
import sun.awt.GlobalCursorManager;
+import sun.awt.LightweightFrame;
+import sun.swing.JLightweightFrame;
public final class WGlobalCursorManager extends GlobalCursorManager {
private static WGlobalCursorManager manager;
public static GlobalCursorManager getCursorManager() {
@@ -44,11 +46,21 @@
*/
public static void nativeUpdateCursor(Component heavy) {
WGlobalCursorManager.getCursorManager().updateCursorLater(heavy);
}
- protected native void setCursor(Component comp, Cursor cursor, boolean u);
+ protected void setCursor(final Component comp, final Cursor cursor, final boolean u) {
+ JLightweightFrame lwFrameUnderCursor = (JLightweightFrame)WLightweightFramePeer.getFrameUnderCursor();
+ if (lwFrameUnderCursor != null) {
+ lwFrameUnderCursor.invokeOnContentsThread(() -> setCursorDirect(comp, cursor, u));
+ } else {
+ setCursorImpl(comp, cursor, u);
+ }
+ }
+
+ protected native void setCursorImpl(Component comp, Cursor cursor, boolean u);
+ protected native void setCursorDirect(Component component, Cursor cursor, boolean u);
protected native void getCursorPos(Point p);
protected native Component findComponentAt(Container con, int x, int y);
/*
* two native methods to call corresponding methods in Container and
* Component