< prev index next >
src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2002, 2018, 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
--- 1,7 ----
/*
! * Copyright (c) 2002, 2019, 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
*** 64,73 ****
--- 64,74 ----
import sun.awt.SunToolkit;
import sun.awt.X11GraphicsDevice;
import sun.awt.X11GraphicsEnvironment;
import sun.java2d.pipe.Region;
import sun.util.logging.PlatformLogger;
+ import sun.awt.OSInfo;
class XWindowPeer extends XPanelPeer implements WindowPeer,
DisplayChangedListener {
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XWindowPeer");
*** 118,127 ****
--- 119,130 ----
* The type is supposed to be immutable while the peer object exists.
* The value gets initialized in the preInit() method.
*/
private Window.Type windowType = Window.Type.NORMAL;
+ private static final boolean isAIX = OSInfo.getOSType() == OSInfo.OSType.AIX;
+
public final Window.Type getWindowType() {
return windowType;
}
// It need to be accessed from XFramePeer.
*** 2022,2031 ****
--- 2025,2051 ----
XToolkit.awtLock();
try {
this.visible = visible;
if (visible) {
applyWindowType();
+ if (isAIX) {
+ /* On Motif Window Manager, non-focusable window should not set WM_TAKE_FOCUS */
+ XAtomList currentWMProtocols = wm_protocols.getAtomListPropertyList(this);
+ if (isFocusableWindow()) {
+ if (!currentWMProtocols.contains(wm_take_focus)) {
+ currentWMProtocols.add(wm_take_focus);
+ wm_protocols.setAtomListProperty(this, currentWMProtocols);
+ }
+ } else {
+ if (XWM.isMotif()) {
+ if (currentWMProtocols.contains(wm_take_focus)) {
+ currentWMProtocols.remove(wm_take_focus);
+ wm_protocols.setAtomListProperty(this, currentWMProtocols);
+ }
+ }
+ }
+ }
XlibWrapper.XMapRaised(XToolkit.getDisplay(), getWindow());
} else {
XlibWrapper.XUnmapWindow(XToolkit.getDisplay(), getWindow());
}
XlibWrapper.XFlush(XToolkit.getDisplay());
< prev index next >