aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java9
-rw-r--r--src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java14
-rw-r--r--src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java10
3 files changed, 24 insertions, 9 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
index ab153090b..3d9076efd 100644
--- a/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
+++ b/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
@@ -355,10 +355,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager
MinOptMax range = new MinOptMax(relDims.ipd);
BlockContainerBreaker breaker = new BlockContainerBreaker(this, range);
breaker.doLayout(relDims.bpd, autoHeight);
- boolean contentOverflows = false;
- if (!breaker.isEmpty()) {
- contentOverflows = (breaker.deferredAlg.getPageBreaks().size() > 1);
- }
+ boolean contentOverflows = breaker.isOverflow();
Position bcPosition = new BlockContainerPosition(this, breaker);
returnList.add(new KnuthBox(vpContentBPD, notifyPos(bcPosition), false));
@@ -648,9 +645,9 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager
}
//Rendering all parts (not just the first) at once for the case where the parts that
//overflow should be visible.
- //TODO Check if this has any unwanted side-effects. Feels a bit like a hack.
+ this.deferredAlg.removeAllPageBreaks();
this.addAreas(this.deferredAlg,
- /*1*/ this.deferredAlg.getPageBreaks().size(),
+ this.deferredAlg.getPageBreaks().size(),
this.deferredOriginalList, this.deferredEffectiveList);
}
diff --git a/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java b/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java
index 32c2b8d3b..57fc4600e 100644
--- a/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java
+++ b/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java
@@ -734,6 +734,20 @@ class PageBreakingAlgorithm extends BreakingAlgorithm {
pageBreaks.addFirst(pageBreak);
}
+ /**
+ * Removes all page breaks from the result list. This is used by block-containers and
+ * static-content when it is only desired to know where there is an overflow but later the
+ * whole content should be painted as one part.
+ */
+ public void removeAllPageBreaks() {
+ if (pageBreaks == null) {
+ return;
+ }
+ while (pageBreaks.size() > 1) {
+ pageBreaks.removeFirst();
+ }
+ }
+
private int getPartCount() {
if (pageBreaks == null) {
return 0;
diff --git a/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java b/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java
index 92437a452..c8b89e6af 100644
--- a/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java
+++ b/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java
@@ -25,9 +25,10 @@ import java.util.ListIterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.fop.area.RegionReference;
+
import org.apache.fop.area.Area;
import org.apache.fop.area.Block;
+import org.apache.fop.area.RegionReference;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.pagination.PageSequence;
import org.apache.fop.fo.pagination.SideRegion;
@@ -339,11 +340,14 @@ public class StaticContentLayoutManager extends BlockStackingLayoutManager {
protected void doPhase3(PageBreakingAlgorithm alg, int partCount,
BlockSequence originalList, BlockSequence effectiveList) {
- //Directly add areas after finding the breaks
- this.addAreas(alg, partCount, originalList, effectiveList);
if (partCount > 1) {
overflow = true;
}
+ //Rendering all parts (not just the first) at once for the case where the parts that
+ //overflow should be visible.
+ alg.removeAllPageBreaks();
+ //Directly add areas after finding the breaks
+ this.addAreas(alg, 1, originalList, effectiveList);
}
protected void finishPart(PageBreakingAlgorithm alg, PageBreakPosition pbp) {