aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2005-12-07 09:01:26 +0000
committerJeremias Maerki <jeremias@apache.org>2005-12-07 09:01:26 +0000
commit56d2a1386836557650baa9db7f839dd2f78247d7 (patch)
tree1f52693f3ba42e8041b9beb365d3dafd4fe141bd /src
parent9a52e6b513054c6e2c511e41542f9b3137c66083 (diff)
downloadxmlgraphics-fop-56d2a1386836557650baa9db7f839dd2f78247d7.tar.gz
xmlgraphics-fop-56d2a1386836557650baa9db7f839dd2f78247d7.zip
Bugzilla #37813:
Fixed a bug that occurred if the first block was span="all". A page break was inserted in this situation, the first span was calculated as if it were span="none". Code added to remove empty span areas. This is a lot easier and cleaner than trying not to instantiate the first span right from the beginning. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@354752 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/fop/area/MainReference.java4
-rw-r--r--src/java/org/apache/fop/layoutmgr/AbstractBreaker.java1
-rw-r--r--src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java5
3 files changed, 9 insertions, 1 deletions
diff --git a/src/java/org/apache/fop/area/MainReference.java b/src/java/org/apache/fop/area/MainReference.java
index 638008587..bdba40f1e 100644
--- a/src/java/org/apache/fop/area/MainReference.java
+++ b/src/java/org/apache/fop/area/MainReference.java
@@ -51,6 +51,10 @@ public class MainReference extends Area {
* @return the created span area.
*/
public Span createSpan(boolean spanAll) {
+ if (spanAreas.size() > 0 && getCurrentSpan().getBPD() == 0) {
+ //Remove the current one if it is empty
+ spanAreas.remove(spanAreas.size() - 1);
+ }
RegionViewport rv = parent.getRegionViewport();
int ipdWidth = (int) parent.getIPD()
- rv.getBorderAndPaddingWidthStart() - rv.getBorderAndPaddingWidthEnd();
diff --git a/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java b/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java
index fbac14f38..83f3c3afb 100644
--- a/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java
+++ b/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java
@@ -439,6 +439,7 @@ public abstract class AbstractBreaker {
BlockSequence blockList;
if ((returnedList = getNextKnuthElements(childLC, alignment)) != null) {
if (returnedList.size() == 0) {
+ nextSequenceStartsOn = handleSpanChange(childLC, nextSequenceStartsOn);
return nextSequenceStartsOn;
}
blockList = new BlockSequence(nextSequenceStartsOn);
diff --git a/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java b/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
index fce0b4479..9bc09c2f5 100644
--- a/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
+++ b/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
@@ -29,6 +29,7 @@ import org.apache.fop.area.Footnote;
import org.apache.fop.area.PageViewport;
import org.apache.fop.area.LineArea;
import org.apache.fop.area.Resolvable;
+import org.apache.fop.area.Span;
import org.apache.fop.fo.Constants;
import org.apache.fop.fo.flow.Marker;
@@ -326,7 +327,9 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
+ ", new start position: " + newStartPos);
//Handle page break right here to avoid any side-effects
- handleBreakTrait(EN_PAGE);
+ if (newStartPos > 0) {
+ handleBreakTrait(EN_PAGE);
+ }
pageBreakHandled = true;
//Update so the available BPD is reported correctly
pvProvider.setStartOfNextElementList(currentPageNum,