--- a/jdk/src/share/classes/javax/swing/text/ParagraphView.java Mon Apr 04 21:37:10 2011 +0400
+++ b/jdk/src/share/classes/javax/swing/text/ParagraphView.java Wed Apr 06 11:51:39 2011 +0400
@@ -721,7 +721,34 @@
@Override
protected SizeRequirements calculateMinorAxisRequirements(int axis,
SizeRequirements r) {
- return super.calculateMinorAxisRequirements(axis, r);
+ r = super.calculateMinorAxisRequirements(axis, r);
+
+ float min = 0;
+ float glue = 0;
+ int n = getLayoutViewCount();
+ for (int i = 0; i < n; i++) {
+ View v = getLayoutView(i);
+ float span = v.getMinimumSpan(axis);
+ if (v.getBreakWeight(axis, 0, v.getMaximumSpan(axis)) > View.BadBreakWeight) {
+ // find the longest non-breakable fragments at the view edges
+ int p0 = v.getStartOffset();
+ int p1 = v.getEndOffset();
+ float start = findEdgeSpan(v, axis, p0, p0, p1);
+ float end = findEdgeSpan(v, axis, p1, p0, p1);
+ glue += start;
+ min = Math.max(min, Math.max(span, glue));
+ glue = end;
+ } else {
+ // non-breakable view
+ glue += span;
+ min = Math.max(min, glue);
+ }
+ }
+ r.minimum = Math.max(r.minimum, (int) min);
+ r.preferred = Math.max(r.minimum, r.preferred);
+ r.maximum = Math.max(r.preferred, r.maximum);
+
+ return r;
}
/**