src/solaris/classes/sun/awt/X11/XBaseWindow.java
Print this page
@@ -57,11 +57,11 @@
BACKING_STORE = "backing store", // enables double buffering
BIT_GRAVITY = "bit gravity"; // copy old content on geometry change
private XCreateWindowParams delayedParams;
Set<Long> children = new HashSet<Long>();
- long window;
+ long window = XConstants.None;
boolean visible;
boolean mapped;
boolean embedded;
Rectangle maxBounds;
volatile XBaseWindow parentWindow;
@@ -330,11 +330,17 @@
xattr.set_background_pixmap(background_pixmap.longValue());
value_mask |= XConstants.CWBackPixmap;
}
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);
Boolean overrideRedirect = (Boolean)params.get(OVERRIDE_REDIRECT);
if (overrideRedirect != null) {
@@ -921,15 +927,19 @@
}
}
// -------------- Event handling ----------------
public void handleMapNotifyEvent(XEvent xev) {
+ if (xev.get_xany().get_window() == getWindow()) {
mapped = true;
}
+ }
public void handleUnmapNotifyEvent(XEvent xev) {
+ if (xev.get_xany().get_window() == getWindow()) {
mapped = false;
}
+ }
public void handleReparentNotifyEvent(XEvent xev) {
if (eventLog.isLoggable(Level.FINER)) {
XReparentEvent msg = xev.get_xreparent();
eventLog.finer(msg.toString());
}
@@ -1024,10 +1034,15 @@
}
public void handleConfigureNotifyEvent(XEvent xev) {
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();
height = xe.get_height();
}