]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #37468:
authorJeremias Maerki <jeremias@apache.org>
Fri, 11 Nov 2005 16:39:21 +0000 (16:39 +0000)
committerJeremias Maerki <jeremias@apache.org>
Fri, 11 Nov 2005 16:39:21 +0000 (16:39 +0000)
Bugfix: A normal break inside a table resulted in the next part to be sent to the next page instead of the next flow. TableContentLayoutManager produces KnuthPenalties with breakClass=0.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@332594 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
test/layoutengine/standard-testcases/region-body_column-count_bug37468.xml [new file with mode: 0644]

index 6dbc997b34755683b3e7e116d62bb71715781e17..fce0b4479b58365d16586e65ec934ea919a4c49a 100644 (file)
@@ -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 (file)
index 0000000..9055b63
--- /dev/null
@@ -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>