--- old/src/windows/classes/sun/awt/windows/WGlobalCursorManager.java 2013-09-03 18:40:43.000000000 +0400 +++ new/src/windows/classes/sun/awt/windows/WGlobalCursorManager.java 2013-09-03 18:40:42.000000000 +0400 @@ -27,6 +27,8 @@ 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; @@ -46,7 +48,17 @@ 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); /*