aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2006-08-02 14:49:00 +0000
committerJeremias Maerki <jeremias@apache.org>2006-08-02 14:49:00 +0000
commitf11d6d86d02cf0f984c6270cd4d5a78cbbd4e43e (patch)
tree7e123b492d1231090fcffccc0912939c72688635 /src
parentc0be6dbf9aa9f300b7d7a76da49a9677e8a4a375 (diff)
downloadxmlgraphics-fop-f11d6d86d02cf0f984c6270cd4d5a78cbbd4e43e.tar.gz
xmlgraphics-fop-f11d6d86d02cf0f984c6270cd4d5a78cbbd4e43e.zip
Bugfix: Table headers and footers were swallowed when a table was nested in a list-block.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@428011 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java3
-rw-r--r--src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java15
2 files changed, 17 insertions, 1 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java b/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java
index 6e647353e..41ab67dcd 100644
--- a/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java
+++ b/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java
@@ -30,6 +30,7 @@ import org.apache.fop.layoutmgr.PositionIterator;
import org.apache.fop.layoutmgr.Position;
import org.apache.fop.layoutmgr.NonLeafPosition;
import org.apache.fop.layoutmgr.TraitSetter;
+import org.apache.fop.layoutmgr.SpaceResolver.SpaceHandlingBreakPosition;
import org.apache.fop.area.Area;
import org.apache.fop.area.Block;
@@ -145,6 +146,8 @@ public class ListItemContentLayoutManager extends BlockStackingLayoutManager {
if (firstLM == null) {
firstLM = lastLM;
}
+ } else if (pos instanceof SpaceHandlingBreakPosition) {
+ positionList.add(pos);
} else {
// pos was created by this ListBlockLM, so it must be ignored
}
diff --git a/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java b/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java
index 6bcbf4de0..336d34f30 100644
--- a/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java
+++ b/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java
@@ -288,7 +288,21 @@ public class ListItemLayoutManager extends BlockStackingLayoutManager
int penaltyHeight = step
+ getMaxRemainingHeight(fullHeights, partialHeights)
- totalHeight;
+
+ //Additional penalty height from penalties in the source lists
+ int additionalPenaltyHeight = 0;
+ KnuthElement endEl = (KnuthElement)elementLists[0].get(end[0]);
+ if (endEl instanceof KnuthPenalty) {
+ additionalPenaltyHeight = ((KnuthPenalty)endEl).getW();
+ }
+ endEl = (KnuthElement)elementLists[1].get(end[1]);
+ if (endEl instanceof KnuthPenalty) {
+ additionalPenaltyHeight = Math.max(
+ additionalPenaltyHeight, ((KnuthPenalty)endEl).getW());
+ }
+
int boxHeight = step - addedBoxHeight - penaltyHeight;
+ penaltyHeight += additionalPenaltyHeight; //Add AFTER calculating boxHeight!
// add the new elements
addedBoxHeight += boxHeight;
@@ -300,7 +314,6 @@ public class ListItemLayoutManager extends BlockStackingLayoutManager
if (keepWithNextActive || mustKeepTogether()) {
p = KnuthPenalty.INFINITE;
}
- //returnList.add(new KnuthPenalty(penaltyHeight, p, false, stepPosition, false));
returnList.add(new BreakElement(stepPosition, penaltyHeight, p, -1, context));
}
}