You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2006/11/07 14:55:55 UTC

svn commit: r472118 - in /incubator/harmony/enhanced/classlib/trunk/modules: awt/src/main/java/common/java/awt/ awt/src/main/java/common/org/apache/harmony/awt/ swing/src/main/java/common/org/apache/harmony/x/swing/

Author: apetrenko
Date: Tue Nov  7 05:55:54 2006
New Revision: 472118

URL: http://svn.apache.org/viewvc?view=rev&rev=472118
Log:
Patch for HARMONY-1865 "[classlib][swing] Non-topmost JInternalFrame is painted incorrectly after movement"

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Component.java
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Container.java
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Toolkit.java
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/ComponentInternals.java
    incubator/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/BlitSupport.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Component.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Component.java?view=diff&rev=472118&r1=472117&r2=472118
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Component.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Component.java Tue Nov  7 05:55:54 2006
@@ -4168,7 +4168,9 @@
         r.translate(x, y);
         MultiRectArea ret = parent.getObscuredRegion(r);
         if (ret != null) {
+            parent.addObscuredRegions(ret, this);
             ret.translate(-x, -y);
+            ret.intersect(new Rectangle(0, 0, w, h));
         }
         return ret;
     }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Container.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Container.java?view=diff&rev=472118&r1=472117&r2=472118
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Container.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Container.java Tue Nov  7 05:55:54 2006
@@ -35,6 +35,8 @@
 
 import org.apache.harmony.awt.internal.nls.Messages;
 
+import org.apache.harmony.awt.gl.MultiRectArea;
+
 public class Container extends Component {
     private static final long serialVersionUID = 4613797578919906343L;
 
@@ -1411,5 +1413,29 @@
             container = container.getFocusCycleRootAncestor();
         }
         return (container == root) ? root : null;
+    }
+
+    /**
+     * Adds parts obscured by components which
+     * are above the given component
+     * in this container to mra
+     * @param mra MultiRectArea to add regions to
+     * @param component obscured regions of this component are added
+     */
+    void addObscuredRegions(MultiRectArea mra, Component component) {
+        int z = getComponentZOrder(component);
+        int i;
+        for (i = 0; i < z; i++) {
+            Component comp = getComponent(i);
+            if (comp.isDisplayable()&& comp.isVisible()&& comp.isOpaque()) {
+                mra.add(comp.getBounds());
+            }
+        }
+        for (i = z + 1; i < getComponentCount(); i++) {
+            Component comp = getComponent(i);
+            if (comp.isVisible() && !comp.isLightweight()) {
+                mra.add(comp.getBounds());
+            }
+        }
     }
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Toolkit.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Toolkit.java?view=diff&rev=472118&r1=472117&r2=472118
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Toolkit.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/java/awt/Toolkit.java Tue Nov  7 05:55:54 2006
@@ -368,6 +368,13 @@
         public void setVisibleFlag(Component comp, boolean visible) {
             comp.visible = visible;
         }
+
+        @Override
+        public void addObscuredRegions(MultiRectArea mra, Component c, Container container) {
+            if (container != null) {
+                container.addObscuredRegions(mra, c);
+            }            
+        }
     }
 
     /*
@@ -542,7 +549,7 @@
                 public WTK init() {
                     wtk = createWTK(className);
                     wtk.getNativeEventQueue().setShutdownWatchdog(shutdownWatchdog);
-                    synchronizer.setEnvironment(wtk, nativeThread);
+                    synchronizer.setEnvironment(wtk, dispatchThread);
                     ContextStorage.setWTK(wtk);
                     dtk.initDragAndDrop();
                     return wtk;

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/ComponentInternals.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/ComponentInternals.java?view=diff&rev=472118&r1=472117&r2=472118
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/ComponentInternals.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/ComponentInternals.java Tue Nov  7 05:55:54 2006
@@ -21,6 +21,7 @@
 package org.apache.harmony.awt;
 
 import java.awt.Component;
+import java.awt.Container;
 import java.awt.Dialog;
 import java.awt.Dimension;
 import java.awt.Image;
@@ -178,6 +179,13 @@
      * heavyweight components overlapping with passed component
      */
     public abstract MultiRectArea getObscuredRegion(Component c);
+    
+    /**
+     * An accessor to Container.addObscuredRegions() method
+     * @see java.awt.Container#addObscuredRegions(MultiRectArea, Component)
+     */
+    public abstract void addObscuredRegions(MultiRectArea mra, Component c,
+                                            Container container);
     
     /**
      * Makes it possible to call protected Toolkit.setDesktopProperty()

Modified: incubator/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/BlitSupport.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/BlitSupport.java?view=diff&rev=472118&r1=472117&r2=472118
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/BlitSupport.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/BlitSupport.java Tue Nov  7 05:55:54 2006
@@ -20,6 +20,7 @@
  */
 package org.apache.harmony.x.swing;
 
+import java.awt.Component;
 import java.awt.Container;
 import java.awt.EventQueue;
 import java.awt.Graphics;
@@ -92,10 +93,6 @@
         }
 
         Rectangle parentBounds = parent.getVisibleRect();
-        if (Utilities.getDrawingRoot(parent, parentBounds) != parent) {
-            resetBlitting();
-            return false;
-        }
 
         Graphics g = parent.getGraphics();
         if (g == null) {
@@ -189,7 +186,9 @@
     }
 
     private boolean isObscured(final int x, final int y, final int width, final int height) {
-        MultiRectArea obscuredArea = ComponentInternals.getComponentInternals().getObscuredRegion(parent);
+        ComponentInternals ci = ComponentInternals.getComponentInternals();
+        MultiRectArea obscuredArea = ci.getObscuredRegion(parent);
+        ci.addObscuredRegions(obscuredArea, blitingComponent, parent);
         if (obscuredArea == null || obscuredArea.isEmpty()) {
             return false;
         }