-
Notifications
You must be signed in to change notification settings - Fork 341
Open
Description
patch fixed the bug by adding a Math.max function to make sure the Range is not negative.
diff --git a/source/org/jfree/chart/block/BorderArrangement.java b/source/org/jfree/chart/block/BorderArrangement.java
index b3ae54b..730aeb3 100644
--- a/source/org/jfree/chart/block/BorderArrangement.java
+++ b/source/org/jfree/chart/block/BorderArrangement.java
@@ -452,7 +452,7 @@ public class BorderArrangement implements Arrangement, Serializable {
h[3] = h[2];
if (this.rightBlock != null) {
RectangleConstraint c4 = new RectangleConstraint(0.0,
- new Range(0.0, Math.max(constraint.getWidth() - w[2], 0.0)),
+ new Range(0.0, constraint.getWidth() - w[2]),
LengthConstraintType.RANGE, h[2], null,
LengthConstraintType.FIXED);
Size2D size = this.rightBlock.arrange(g2, c4);
However, the actual reason of the bug is w[2] > constraint.getWidth(), which should not be the case.
if (this.leftBlock != null) {
RectangleConstraint c3 = new RectangleConstraint(0.0,
new Range(0.0, constraint.getWidth()),
LengthConstraintType.RANGE, h[2], null,
LengthConstraintType.FIXED);
Size2D size = this.leftBlock.arrange(g2, c3);
w[2] = size.width;
}
It is because the arrange method in some Block class did not handle constraint correctly.
In Emptyblock.java:
public Size2D arrange(Graphics2D g2, RectangleConstraint constraint) {
return new Size2D(calculateTotalWidth(getWidth()),
calculateTotalHeight(getHeight()));
}
In AbstractBlock.java, it handled it correctly:
public Size2D arrange(Graphics2D g2, RectangleConstraint constraint) {
Size2D base = new Size2D(getWidth(), getHeight());
return constraint.calculateConstrainedSize(base);
}
However, in actual test, the method in emptybock class override it.
Metadata
Metadata
Assignees
Labels
No labels