--- old/src/solaris/classes/sun/awt/X11/XBaseWindow.java 2009-08-11 19:21:14.000000000 +0400 +++ new/src/solaris/classes/sun/awt/X11/XBaseWindow.java 2009-08-11 19:21:14.000000000 +0400 @@ -59,7 +59,7 @@ private XCreateWindowParams delayedParams; Set children = new HashSet(); - long window; + long window = XConstants.None; boolean visible; boolean mapped; boolean embedded; @@ -332,7 +332,13 @@ } Long parentWindow = (Long)params.get(PARENT_WINDOW); + Rectangle bounds = (Rectangle)params.get(BOUNDS); + this.x = bounds.x; + this.y = bounds.y; + this.width = bounds.width; + this.height = bounds.height; + Integer depth = (Integer)params.get(DEPTH); Integer visual_class = (Integer)params.get(VISUAL_CLASS); Long visual = (Long)params.get(VISUAL); @@ -923,10 +929,14 @@ // -------------- Event handling ---------------- public void handleMapNotifyEvent(XEvent xev) { - mapped = true; + if (xev.get_xany().get_window() == getWindow()) { + mapped = true; + } } public void handleUnmapNotifyEvent(XEvent xev) { - mapped = false; + if (xev.get_xany().get_window() == getWindow()) { + mapped = false; + } } public void handleReparentNotifyEvent(XEvent xev) { if (eventLog.isLoggable(Level.FINER)) { @@ -1026,6 +1036,11 @@ XConfigureEvent xe = xev.get_xconfigure(); insLog.log(Level.FINER, "Configure, {0}", new Object[] {xe}); + + if (xe.get_window() != getWindow()) { + return; + } + x = xe.get_x(); y = xe.get_y(); width = xe.get_width();