2006-05-15  Audrius Meskauskas  <[EMAIL PROTECTED]>

   * javax/swing/RepaintManager.java (paintDirtyRegions):
   Break loop as soon as the component repaint is merged
   with some parent. (ComponentComparator): Removed.
   (comparator): Removed.
Index: RepaintManager.java
===================================================================
RCS file: /sources/classpath/classpath/javax/swing/RepaintManager.java,v
retrieving revision 1.34
diff -u -r1.34 RepaintManager.java
--- RepaintManager.java	15 May 2006 18:08:29 -0000	1.34
+++ RepaintManager.java	15 May 2006 19:39:47 -0000
@@ -136,44 +136,6 @@
 
   }
 
-  /**
-   * Compares two components using their depths in the component hierarchy.
-   * A component with a lesser depth (higher level components) are sorted
-   * before components with a deeper depth (low level components). This is used
-   * to order paint requests, so that the higher level components are painted
-   * before the low level components get painted.
-   *
-   * @author Roman Kennke ([EMAIL PROTECTED])
-   */
-  private class ComponentComparator implements Comparator
-  {
-
-    /**
-     * Compares two components.
-     *
-     * @param o1 the first component
-     * @param o2 the second component
-     *
-     * @return a negative integer, if <code>o1</code> is bigger in than
-     *         <code>o2</code>, zero, if both are at the same size and a
-     *         positive integer, if <code>o1</code> is smaller than
-     *         <code>o2</code> 
-     */
-    public int compare(Object o1, Object o2)
-    {
-      if (o1 instanceof JComponent && o2 instanceof JComponent)
-        {
-          JComponent c1 = (JComponent) o1;
-          Rectangle d1 = (Rectangle) dirtyComponentsWork.get(c1);
-          JComponent c2 = (JComponent) o2;
-          Rectangle d2 = (Rectangle) dirtyComponentsWork.get(c2);
-          return d2.width * d2.height - d1.width * d1.height;
-        }
-      throw new ClassCastException("This comparator can only be used with "
-                                   + "JComponents");
-    }
-  }
-
   /** 
    * A table storing the dirty regions of components.  The keys of this
    * table are components, the values are rectangles. Each component maps
@@ -198,11 +160,6 @@
   HashMap dirtyComponentsWork;
 
   /**
-   * The comparator used for ordered inserting into the repaintOrder list. 
-   */
-  private transient Comparator comparator;
-
-  /**
    * A single, shared instance of the helper class. Any methods which mark
    * components as invalid or dirty eventually activate this instance. It
    * is added to the event queue if it is not already active, otherwise
@@ -583,7 +540,7 @@
         someRemoved = false;
         // Where possible, do not repaint the component, extending the
         // parent repaint region instead.
-        for (int i = 0; i < components.length; i++)
+        Components: for (int i = 0; i < components.length; i++)
           if (components[i] != null)
             {
               Component c = (Component) components[i];
@@ -604,8 +561,7 @@
                     Rectangle crect = (Rectangle) dirtyComponentsWork.get(c);
                     crect.translate(x, y);
                     prect.add(crect);
-                    c = p;
-                    p = p.getParent();
+                    continue Components;
                   }
                 else
                   {

Reply via email to