--- old/src/windows/classes/sun/awt/windows/WGlobalCursorManager.java 2013-09-04 12:42:25.373564000 +0400 +++ new/src/windows/classes/sun/awt/windows/WGlobalCursorManager.java 2013-09-04 12:42:25.217563700 +0400 @@ -27,6 +27,10 @@ import java.awt.*; import sun.awt.GlobalCursorManager; +import sun.awt.LightweightFrame; +import sun.swing.JLightweightFrame; +import sun.swing.LightweightContent; +import sun.swing.SwingAccessor; public final class WGlobalCursorManager extends GlobalCursorManager { private static WGlobalCursorManager manager; @@ -46,7 +50,20 @@ 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 = WLightweightFramePeer.getFrameUnderCursor(); + if (lwFrameUnderCursor != null) { + LightweightContent lwContent = SwingAccessor + .getJLightweightFrameAccessor() + .getLightweightContent(lwFrameUnderCursor); + lwContent.invokeOnClientToolkitThread(() -> 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); /*