< 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 >