I discovered another problem with the SizeRequirements. The method
calculateAlignedPositions handled the minimumSize incorrectly, this is
fixed. Mauve testcase following soon.

2005-10-13  Roman Kennke  <[EMAIL PROTECTED]>

        * javax/swing/SizeRequirements.java
        (calculateAlignedPositions): Determine baseline using the total
        requirements argument.
        (adjustFromRight): Use float instead of int for baseline argument.
        Don't handle the <minimum case.
        (adjustFromLeft): Likewise.

/Roman
Index: javax/swing/SizeRequirements.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/SizeRequirements.java,v
retrieving revision 1.18
diff -u -r1.18 SizeRequirements.java
--- javax/swing/SizeRequirements.java	4 Oct 2005 14:50:31 -0000	1.18
+++ javax/swing/SizeRequirements.java	13 Oct 2005 20:01:46 -0000
@@ -424,16 +424,8 @@
                                                boolean forward)
   {
     // First we compute the position of the baseline.
-    float left = 0;
-    float right = 0;
-    for (int i = 0; i < children.length; i++)
-      {
-        float myLeft = children[i].preferred * children[i].alignment;
-        float myRight = children[i].preferred - myLeft;
-        left = Math.max(myLeft, left);
-        right = Math.max(myRight, right);
-      }
-    int baseline = (int) ((left / (left + right)) * allocated);
+    float baseline = allocated * total.alignment;
+
     // Now we can layout the components along the baseline.
     for (int i = 0; i < children.length; i++)
       {
@@ -457,7 +449,7 @@
    * @param allocated
    * @param spanAndOffset
    */
-  private static void adjustFromRight(SizeRequirements reqs, int baseline,
+  private static void adjustFromRight(SizeRequirements reqs, float baseline,
                                       int allocated, int[] spanAndOffset)
   {
     float right = allocated - baseline;
@@ -470,14 +462,9 @@
     if (right / (1.F - reqs.alignment) * reqs.alignment > allocated - baseline)
       right = ((float) (allocated - baseline))
              / reqs.alignment * (1.F - reqs.alignment);
-    // If we are below the minimum, then adjust upwards.
-      float minRight = ((float) reqs.minimum) * (1.F - reqs.alignment);
-    if (right / (1.F - reqs.alignment) < reqs.minimum)
-      right = Math.max(minRight, maxRight);
 
     spanAndOffset[0] = (int) (right / (1.F - reqs.alignment));
-    spanAndOffset[1] = baseline -
-                       (int) (((float) spanAndOffset[0]) * reqs.alignment);
+    spanAndOffset[1] = (int) (baseline - spanAndOffset[0] * reqs.alignment);
   }
 
   /**
@@ -488,7 +475,7 @@
    * @param allocated
    * @param spanAndOffset
    */
-  private static void adjustFromLeft(SizeRequirements reqs, int baseline,
+  private static void adjustFromLeft(SizeRequirements reqs, float baseline,
                                      int allocated, int[] spanAndOffset)
   {
     float left = baseline;
@@ -502,14 +489,8 @@
       left = ((float) (allocated - baseline))
              / (1.F - reqs.alignment) * reqs.alignment;
 
-    // If we are below the minimum, then adjust upwards.
-    float minLeft = ((float) reqs.minimum) * reqs.alignment;
-    if (left / reqs.alignment < reqs.minimum)
-      left = Math.max(minLeft, maxLeft);
-
     spanAndOffset[0] = (int) (left / reqs.alignment);
-    spanAndOffset[1] = baseline -
-                       (int) (((float) spanAndOffset[0]) * reqs.alignment);
+    spanAndOffset[1] = (int) (baseline - spanAndOffset[0] * reqs.alignment);
   }
 
   /**
_______________________________________________
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to