You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2007/01/15 21:38:59 UTC
svn commit: r496469 - in /harmony/enhanced/classlib/trunk/modules/swing/src:
main/java/common/org/apache/harmony/x/swing/
test/api/java/common/javax/swing/text/
test/api/java/common/org/apache/harmony/x/swing/
Author: hindessm
Date: Mon Jan 15 12:38:58 2007
New Revision: 496469
URL: http://svn.apache.org/viewvc?view=rev&rev=496469
Log:
Applying patches from "[#HARMONY-2915] [classlib][swing] j.s.text.BoxView
incorrectly layouts where its child views are resizable".
Modified:
harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/SizeRequirementsHelper.java
harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/BoxView_WithChildrenTest.java
harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/org/apache/harmony/x/swing/SizeRequirementsHelperRTest.java
Modified: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/SizeRequirementsHelper.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/SizeRequirementsHelper.java?view=diff&rev=496469&r1=496468&r2=496469
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/SizeRequirementsHelper.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/org/apache/harmony/x/swing/SizeRequirementsHelper.java Mon Jan 15 12:38:58 2007
@@ -168,25 +168,45 @@
final int[] offsets,
final int[] spans) {
- calculateTiledSpans(allocated, total, children, spans);
-
- final int aligningAxis = (int)((allocated - total.preferred) / 2
- + total.alignment * total.preferred);
+ int baseLineOffset = (int)(allocated * total.alignment);
+ int childMinRequirement;
for (int iChild = 0; iChild < children.length; iChild++) {
- offsets[iChild] = (int)(aligningAxis - children[iChild].alignment * spans[iChild]);
- if (offsets[iChild] < 0) {
- if (spans[iChild] + offsets[iChild] > children[iChild].minimum) {
- spans[iChild] = spans[iChild] + offsets[iChild];
- offsets[iChild] = 0;
+ childMinRequirement = children[iChild].minimum;
+
+ if (children[iChild].alignment == 0) {
+ offsets[iChild] = baseLineOffset;
+ if (allocated - baseLineOffset > childMinRequirement) {
+ spans[iChild] = Math.min(children[iChild].maximum,
+ allocated - baseLineOffset);
+ } else {
+ spans[iChild] = childMinRequirement;
+ }
+ continue;
+ }
+
+ if (children[iChild].alignment == 1) {
+ if (baseLineOffset < childMinRequirement) {
+ spans[iChild] = childMinRequirement;
} else {
- offsets[iChild] += spans[iChild] - children[iChild].minimum;
- spans[iChild] = children[iChild].minimum;
+ spans[iChild] = Math.min(children[iChild].maximum,
+ baseLineOffset);
}
+ offsets[iChild] = baseLineOffset - spans[iChild];
+ continue;
}
- if (offsets[iChild] + spans[iChild] > allocated) {
- spans[iChild] = Math.max(children[iChild].minimum, allocated - offsets[iChild]);
+
+ int upperSpan = (int)(baseLineOffset / children[iChild].alignment);
+ int bottomSpan = (int)((allocated - baseLineOffset) / (1 - children[iChild].alignment));
+
+ spans[iChild] = childMinRequirement;
+ if (childMinRequirement <= upperSpan
+ && childMinRequirement <= bottomSpan) {
+ spans[iChild] = Math.min(children[iChild].maximum, Math
+ .min(upperSpan, bottomSpan));
}
+ offsets[iChild] = baseLineOffset
+ - (int)(spans[iChild] * children[iChild].alignment);
}
}
Modified: harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/BoxView_WithChildrenTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/BoxView_WithChildrenTest.java?view=diff&rev=496469&r1=496468&r2=496469
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/BoxView_WithChildrenTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/BoxView_WithChildrenTest.java Mon Jan 15 12:38:58 2007
@@ -444,7 +444,7 @@
View child = view.getView(i);
float span = child.getPreferredSpan(axis);
float offset = leftInset - span * child.getAlignment(axis);
- if (i == 1 && !isHarmony()) {
+ if (i == 1) {
// The cause is rounding errors
offset += 1;
}
Modified: harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/org/apache/harmony/x/swing/SizeRequirementsHelperRTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/org/apache/harmony/x/swing/SizeRequirementsHelperRTest.java?view=diff&rev=496469&r1=496468&r2=496469
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/org/apache/harmony/x/swing/SizeRequirementsHelperRTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/org/apache/harmony/x/swing/SizeRequirementsHelperRTest.java Mon Jan 15 12:38:58 2007
@@ -41,7 +41,7 @@
int[] offsets = new int[children.length];
int[] spans = new int[children.length];
SizeRequirementsHelper.calculateAlignedPositions(100, total, children, offsets, spans);
- assertEquals(37, offsets[0]);
+ assertEquals(38, offsets[0]);
assertEquals(25, offsets[1]);
assertEquals(25, spans[0]);
assertEquals(50, spans[1]);
@@ -51,9 +51,9 @@
offsets = new int[children.length];
spans = new int[children.length];
SizeRequirementsHelper.calculateAlignedPositions(200, total, children, offsets, spans);
- assertEquals(75, offsets[0]);
- assertEquals(50, offsets[1]);
- assertEquals(50, spans[0]);
- assertEquals(100, spans[1]);
+ assertEquals(0, offsets[0]);
+ assertEquals(0, offsets[1]);
+ assertEquals(200, spans[0]);
+ assertEquals(200, spans[1]);
}
}