diff options
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java | 8 | ||||
-rw-r--r-- | test/layoutengine/standard-testcases/region-body_column-count_bug37468.xml | 130 |
2 files changed, 135 insertions, 3 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java b/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java index 6dbc997b3..fce0b4479 100644 --- a/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java @@ -191,7 +191,8 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager { needColumnBalancing = (childLC.getNextSpan() == Constants.EN_ALL); } if (needColumnBalancing) { - AbstractBreaker.log.debug("Column balancing necessary for the next element list!!!"); + AbstractBreaker.log.debug( + "Column balancing necessary for the next element list!!!"); } return nextSequenceStartsOn; } @@ -321,7 +322,8 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager { } else { newStartPos = 0; } - AbstractBreaker.log.debug("Restarting at " + restartPoint + ", new start position: " + newStartPos); + AbstractBreaker.log.debug("Restarting at " + restartPoint + + ", new start position: " + newStartPos); //Handle page break right here to avoid any side-effects handleBreakTrait(EN_PAGE); @@ -623,7 +625,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager { } else if (breakVal == Constants.EN_NONE) { curPV.createSpan(false); return; - } else if (breakVal == Constants.EN_COLUMN || breakVal == -1) { + } else if (breakVal == Constants.EN_COLUMN || breakVal <= 0) { if (curPV.getCurrentSpan().hasMoreFlows()) { curPV.getCurrentSpan().moveToNextFlow(); } else { diff --git a/test/layoutengine/standard-testcases/region-body_column-count_bug37468.xml b/test/layoutengine/standard-testcases/region-body_column-count_bug37468.xml new file mode 100644 index 000000000..9055b63d4 --- /dev/null +++ b/test/layoutengine/standard-testcases/region-body_column-count_bug37468.xml @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright 2005 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- $Id$ --> +<testcase> + <info> + <p> + This test checks multi-column documents. Checks a problem described in Bugzilla #37468. + A table that was broken in multiple parts started a new page after each break possibility + instead of changing to the next flow area. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="normal" page-width="320pt" page-height="1.5in"> + <fo:region-body column-count="3" column-gap="10pt"/> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence master-reference="normal"> + <fo:flow flow-name="xsl-region-body"> + <fo:table table-layout="fixed" width="100%" border-collapse="separate"> + <fo:table-column/> + <fo:table-column/> + <fo:table-body> + <fo:table-row> + <fo:table-cell> + <fo:block>r1 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r1 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r2 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r2 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r3 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r3 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r4 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r4 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r5 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r5 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r6 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r6 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r7 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r7 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r8 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r8 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r9 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r9 c2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>r10 c1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>r10 c2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + <checks> + <eval expected="1" xpath="count(//pageViewport)"/> + <true xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[1]/*) > 0"/> + <true xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[2]/*) > 0"/> + </checks> +</testcase> |