diff --git a/src/share/classes/sun/swing/JLightweightFrame.java b/src/share/classes/sun/swing/JLightweightFrame.java index f7ea0aead1ecbcec2f326215d8ce0e995fb31ea6..162186f4ce38a89e553bf8f9b3b816aa711fa5b1 100644 --- a/src/share/classes/sun/swing/JLightweightFrame.java +++ b/src/share/classes/sun/swing/JLightweightFrame.java @@ -72,8 +72,10 @@ public final class JLightweightFrame extends LightweightFrame implements RootPan public JLightweightFrame() { super(); add(rootPane, BorderLayout.CENTER); - setBackground(new Color(0, 0, 0, 0)); setFocusTraversalPolicy(new LayoutFocusTraversalPolicy()); + if (getGraphicsConfiguration().isTranslucencyCapable()) { + setBackground(new Color(0, 0, 0, 0)); + } } /** diff --git a/src/solaris/classes/sun/awt/X11/XFramePeer.java b/src/solaris/classes/sun/awt/X11/XFramePeer.java index 0c540b1785540d35b0f85ec9849144d0c4454884..28522350da6aef99292cbd1eb47b1ec1581bb9cf 100644 --- a/src/solaris/classes/sun/awt/X11/XFramePeer.java +++ b/src/solaris/classes/sun/awt/X11/XFramePeer.java @@ -642,5 +642,11 @@ class XFramePeer extends XDecoratedPeer implements FramePeer { return getBounds(); } - public void emulateActivation(boolean doActivate) {} + public void emulateActivation(boolean doActivate) { + if (doActivate) { + handleWindowFocusIn(0); + } else { + handleWindowFocusOut(null, 0); + } + } } diff --git a/src/solaris/classes/sun/awt/X11/XLightweightFramePeer.java b/src/solaris/classes/sun/awt/X11/XLightweightFramePeer.java new file mode 100644 index 0000000000000000000000000000000000000000..6292482acdff3adbf10d4b3be263637183f4b309 --- /dev/null +++ b/src/solaris/classes/sun/awt/X11/XLightweightFramePeer.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.awt.X11; + +import java.awt.Graphics; + +import sun.awt.LightweightFrame; + +public class XLightweightFramePeer extends XFramePeer { + + XLightweightFramePeer(LightweightFrame target) { + super(target); + } + + private LightweightFrame getLwTarget() { + return (LightweightFrame)target; + } + + @Override + public Graphics getGraphics() { + return getLwTarget().getGraphics(); + } + + @Override + public void xSetVisible(boolean visible) { + this.visible = visible; + } + + @Override + protected void requestXFocus(long time, boolean timeProvided) { + // not sending native focus events to the proxy + } + + @Override + public void setGrab(boolean grab) { + if (grab) { + getLwTarget().grabFocus(); + } else { + getLwTarget().ungrabFocus(); + } + } +} diff --git a/src/solaris/classes/sun/awt/X11/XToolkit.java b/src/solaris/classes/sun/awt/X11/XToolkit.java index b4fb9c76f179952f0efcb5260c9a4e8290ff39c3..220dff154660fbe4731a39c97f92cb76759d50a0 100644 --- a/src/solaris/classes/sun/awt/X11/XToolkit.java +++ b/src/solaris/classes/sun/awt/X11/XToolkit.java @@ -420,7 +420,9 @@ public final class XToolkit extends UNIXToolkit implements Runnable { } public FramePeer createLightweightFrame(LightweightFrame target) { - return null; + FramePeer peer = new XLightweightFramePeer(target); + targetCreatedPeer(target, peer); + return peer; } public FramePeer createFrame(Frame target) {