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
[email protected]
http://lists.gnu.org/mailman/listinfo/classpath-patches