--- old/src/windows/classes/sun/awt/windows/WToolkit.java 2013-02-15 13:37:59.000000000 +0400 +++ new/src/windows/classes/sun/awt/windows/WToolkit.java 2013-02-15 13:37:59.000000000 +0400 @@ -37,6 +37,7 @@ import java.security.AccessController; import java.security.PrivilegedAction; import sun.awt.AWTAutoShutdown; +import sun.awt.LightweightFrame; import sun.awt.SunToolkit; import sun.awt.Win32GraphicsDevice; import sun.awt.Win32GraphicsEnvironment; @@ -398,6 +399,12 @@ return peer; } + public FramePeer createLightweightFrame(LightweightFrame target) { + FramePeer peer = new WLightweightFramePeer(target); + targetCreatedPeer(target, peer); + return peer; + } + public CanvasPeer createCanvas(Canvas target) { CanvasPeer peer = new WCanvasPeer(target); targetCreatedPeer(target, peer); @@ -978,6 +985,13 @@ @SuppressWarnings("deprecation") public void grab(Window w) { + // When grab/ungrab API is public, + // it should go through Window.grab(), + // not via SunToolkit.grab(Window). + if (w instanceof LightweightFrame) { + ((LightweightFrame)w).grabFocus(); + return; + } if (w.getPeer() != null) { ((WWindowPeer)w.getPeer()).grab(); } @@ -985,8 +999,15 @@ @SuppressWarnings("deprecation") public void ungrab(Window w) { + // When grab/ungrab API is public, + // it should go through Window.ungrab(boolean), + // not via SunToolkit.ungrab(Window). + if (w instanceof LightweightFrame) { + ((LightweightFrame)w).ungrabFocus(false); + return; + } if (w.getPeer() != null) { - ((WWindowPeer)w.getPeer()).ungrab(); + ((WWindowPeer)w.getPeer()).ungrab(false); } }