--- old/src/solaris/classes/sun/awt/X11/XWindowPeer.java 2009-06-16 18:37:19.000000000 +0400 +++ new/src/solaris/classes/sun/awt/X11/XWindowPeer.java 2009-06-16 18:37:18.000000000 +0400 @@ -129,8 +129,6 @@ void preInit(XCreateWindowParams params) { target = (Component)params.get(TARGET); - params.put(REPARENTED, - Boolean.valueOf(isOverrideRedirect() || isSimpleWindow())); super.preInit(params); params.putIfNull(BIT_GRAVITY, Integer.valueOf(XConstants.NorthWestGravity)); @@ -517,13 +515,6 @@ oldState, newState)); } - /** - * DEPRECATED: Replaced by getInsets(). - */ - public Insets insets() { - return getInsets(); - } - boolean isAutoRequestFocus() { if (XToolkit.isToolkitThread()) { return WindowAccessor.isAutoRequestFocus((Window)target); @@ -714,6 +705,10 @@ // TODO: We create an XConfigureEvent every time we override // handleConfigureNotify() - too many! XConfigureEvent xe = xev.get_xconfigure(); + if (xe.get_window() != getWindow()) { + return; + } + checkIfOnNewScreen(new Rectangle(xe.get_x(), xe.get_y(), xe.get_width(), @@ -1177,6 +1172,10 @@ } public void handleMapNotifyEvent(XEvent xev) { + if (xev.get_xany().get_window() != getWindow()) { + return; + } + // See 6480534. isUnhiding |= isWMStateNetHidden(); @@ -1211,6 +1210,9 @@ } public void handleUnmapNotifyEvent(XEvent xev) { + if (xev.get_xany().get_window() != getWindow()) { + return; + } super.handleUnmapNotifyEvent(xev); // On Metacity UnmapNotify comes before PropertyNotify (for _NET_WM_STATE_HIDDEN). @@ -1297,11 +1299,20 @@ } } - void setReparented(boolean newValue) { - super.setReparented(newValue); + @Override + public boolean mayBeReparented() { + return + !isOverrideRedirect() && + !isSimpleWindow() && + super.mayBeReparented(); + } + + @Override + public void setNativeParent(long parent) { + super.setNativeParent(parent); XToolkit.awtLock(); try { - if (isReparented() && delayedModalBlocking) { + if (!mayBeReparented() && delayedModalBlocking) { addToTransientFors((XDialogPeer) ComponentAccessor.getPeer(modalBlocker)); delayedModalBlocking = false; } @@ -1391,7 +1402,7 @@ log.log(Level.FINE, "{0} is blocked by {1}", new Object[] { this, blockerPeer}); modalBlocker = d; - if (isReparented() || XWM.isNonReparentingWM()) { + if (!mayBeReparented()) { addToTransientFors(blockerPeer, javaToplevels); } else { delayedModalBlocking = true; @@ -1402,7 +1413,7 @@ } modalBlocker = null; - if (isReparented() || XWM.isNonReparentingWM()) { + if (!mayBeReparented()) { removeFromTransientFors(); } else { delayedModalBlocking = false;