diff options
author | Jeremias Maerki <jeremias@apache.org> | 2006-08-02 14:49:00 +0000 |
---|---|---|
committer | Jeremias Maerki <jeremias@apache.org> | 2006-08-02 14:49:00 +0000 |
commit | f11d6d86d02cf0f984c6270cd4d5a78cbbd4e43e (patch) | |
tree | 7e123b492d1231090fcffccc0912939c72688635 /src | |
parent | c0be6dbf9aa9f300b7d7a76da49a9677e8a4a375 (diff) | |
download | xmlgraphics-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.java | 3 | ||||
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java | 15 |
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)); } } |