< prev index next >

src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java

Print this page

        

*** 1060,1069 **** --- 1060,1079 ---- XLayerProtocol.LAYER_NORMAL); } public void updateAlwaysOnTopState() { this.alwaysOnTop = ((Window) this.target).isAlwaysOnTop(); + if (ownerPeer != null) { + XToolkit.awtLock(); + try { + applyWindowType(); + restoreTransientFor(this); + } + finally { + XToolkit.awtUnlock(); + } + } updateAlwaysOnTop(); } boolean isLocationByPlatform() { return locationByPlatform;
*** 1645,1654 **** --- 1655,1669 ---- } long bpw = window.getWindow(); while (!XlibUtil.isToplevelWindow(bpw) && !XlibUtil.isXAWTToplevelWindow(bpw)) { bpw = XlibUtil.getParentWindow(bpw); } + if (!transientForWindow.isVisible()) { + XlibWrapper.XSetTransientFor(XToolkit.getDisplay(), bpw, XToolkit.getDefaultRootWindow()); + window.curRealTransientFor = null; + return; + } long tpw = transientForWindow.getWindow(); while (!XlibUtil.isToplevelWindow(tpw) && !XlibUtil.isXAWTToplevelWindow(tpw)) { tpw = XlibUtil.getParentWindow(tpw); } XlibWrapper.XSetTransientFor(XToolkit.getDisplay(), bpw, tpw);
*** 1944,1954 **** XAtom typeAtom = null; switch (getWindowType()) { case NORMAL: ! typeAtom = (ownerPeer == null) ? protocol.XA_NET_WM_WINDOW_TYPE_NORMAL : protocol.XA_NET_WM_WINDOW_TYPE_DIALOG; break; case UTILITY: typeAtom = protocol.XA_NET_WM_WINDOW_TYPE_UTILITY; --- 1959,1969 ---- XAtom typeAtom = null; switch (getWindowType()) { case NORMAL: ! typeAtom = ownerPeer == null || !ownerPeer.isVisible() ? protocol.XA_NET_WM_WINDOW_TYPE_NORMAL : protocol.XA_NET_WM_WINDOW_TYPE_DIALOG; break; case UTILITY: typeAtom = protocol.XA_NET_WM_WINDOW_TYPE_UTILITY;
< prev index next >