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();
     }