]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugfix: keep-together does not apply to fo:table-cell
authorVincent Hennebert <vhennebert@apache.org>
Tue, 22 Mar 2011 14:55:21 +0000 (14:55 +0000)
committerVincent Hennebert <vhennebert@apache.org>
Tue, 22 Mar 2011 14:55:21 +0000 (14:55 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1084205 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java
status.xml
test/layoutengine/standard-testcases/table-row_keep-together.xml
test/layoutengine/standard-testcases/table-row_keep-together_2.xml
test/layoutengine/standard-testcases/table-row_keep-with-next2.xml
test/layoutengine/standard-testcases/table_keep-together.xml

index ded18384d456447978900d9066adc7c90af965f9..d5f259b381dfa1e0d7ebf262f77afe319d9354ef 100644 (file)
@@ -553,12 +553,8 @@ public class TableCellLayoutManager extends BlockStackingLayoutManager
 
     /** {@inheritDoc} */
     public Keep getKeepTogether() {
-        Keep keep = Keep.KEEP_AUTO;
-        if (primaryGridUnit.getRow() != null) {
-            keep = Keep.getKeep(primaryGridUnit.getRow().getKeepTogether());
-        }
-        keep = keep.compare(getParentKeepTogether());
-        return keep;
+        // keep-together does not apply to fo:table-cell
+        return Keep.KEEP_AUTO;
     }
 
     /** {@inheritDoc} */
index 337164b3100c476261dd5c30918f22469149e13d..304c0817304495233c0913f5762c92df8a10cad0 100644 (file)
@@ -59,6 +59,9 @@
       documents. Example: the fix of marks layering will be such a case when it's done.
     -->
     <release version="FOP Trunk" date="TBD">
+      <action context="Layout" dev="VH" type="fix">
+        Bugfix: keep-together does not apply to fo:table-cell.
+      </action>
       <action context="Layout" dev="VH" type="fix">
         Bugfix: keep-together on a table containing row-spanning cells was not honored.
       </action>
index 0cf04bf37069b421cc090eadb85d25832027de92..73a334c6d0af727703886f8f35f376ddf6951392 100644 (file)
@@ -55,7 +55,7 @@
   <checks>
     <element-list category="table-cell" id="cell1">
       <box w="14400"/>
-      <penalty w="0" p="INF"/> <!-- the keep-together on the table-row has to result in an INFINITE penalty here -->
+      <penalty w="0" p="0"/>
       <box w="14400"/>
     </element-list>
     <element-list category="table-cell" id="cell2">
index 0e2867b2e5fbeed0d9caf3d31c04591be741c482..db75e4063712bb68ebb44cbb86938e67d6e9227c 100644 (file)
         </fo:flow>
       </fo:page-sequence>
 
+      <!-- table 4 -->
+      <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block space-after="110pt">4. Before the table</fo:block>
+          <fo:table width="100%" table-layout="fixed"
+            border-collapse="collapse" border="4pt solid black">
+            <fo:table-column number-columns-repeated="2"
+              column-width="proportional-column-width(1)"/>
+            <fo:table-body>
+              <fo:table-row keep-together.within-page="always">
+                <fo:table-cell border="2pt solid blue" number-rows-spanned="2">
+                  <fo:block>Cell 1.1 Line 1</fo:block>
+                  <fo:block>Cell 1.1 Line 2</fo:block>
+                  <fo:block>Cell 1.1 Line 3</fo:block>
+                </fo:table-cell>
+                <fo:table-cell border="2pt solid teal">
+                  <fo:block>Cell 1.2 Line 1</fo:block>
+                  <fo:block>Cell 1.2 Line 2</fo:block>
+                </fo:table-cell>
+              </fo:table-row>
+              <fo:table-row>
+                <fo:table-cell border="2pt solid olive">
+                  <fo:block>Cell 2.2 Line 1</fo:block>
+                  <fo:block>Cell 2.2 Line 2</fo:block>
+                </fo:table-cell>
+              </fo:table-row>
+            </fo:table-body>
+          </fo:table>
+          <fo:block>After the table</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+
     </fo:root>
   </fo>
   <checks>
     <eval expected="(solid,#808000,2000,collapse-outer)" xpath="//pageViewport[@nr=6]//flow/block[1]/block[3]/@border-before"/>
     <eval expected="(solid,#000000,4000,collapse-outer)" xpath="//pageViewport[@nr=6]//flow/block[1]/block[3]/@border-after"/>
 
+    <!-- table 4 -->
+    <eval expected="2"                             xpath="count(//pageSequence[4]/pageViewport)"/>
+    <!-- page 1 -->
+    <eval expected="2"                             xpath="count(//pageViewport[@nr=7]//flow/block)"/>
+    <eval expected="4. Before the table"                 xpath="//pageViewport[@nr=7]//flow/block[1]/lineArea"/>
+    <eval expected="23000"                               xpath="//pageViewport[@nr=7]//flow/block[2]/@bpd"/>
+    <eval expected="23000"                               xpath="//pageViewport[@nr=7]//flow/block[2]/@bpda"/>
+    <!-- cell 1.1 -->
+    <eval expected="21000"                               xpath="//pageViewport[@nr=7]//flow/block[2]/block[1]/@bpd"/>
+    <eval expected="25000"                               xpath="//pageViewport[@nr=7]//flow/block[2]/block[1]/@bpda"/>
+    <eval expected="(solid,#000000,4000,collapse-outer)" xpath="//pageViewport[@nr=7]//flow/block[2]/block[1]/@border-before"/>
+    <eval expected=""                                    xpath="//pageViewport[@nr=7]//flow/block[2]/block[1]/@border-after"/>
+    <eval expected="21000"                               xpath="//pageViewport[@nr=7]//flow/block[2]/block[2]/@bpd"/>
+    <eval expected="21000"                               xpath="//pageViewport[@nr=7]//flow/block[2]/block[2]/@bpda"/>
+    <eval expected="2"                             xpath="count(//pageViewport[@nr=7]//flow/block[2]/block[2]/block)"/>
+    <eval expected="Cell 1.1 Line 1"                     xpath="//pageViewport[@nr=7]//flow/block[2]/block[2]/block[1]/lineArea"/>
+    <eval expected="Cell 1.1 Line 2"                     xpath="//pageViewport[@nr=7]//flow/block[2]/block[2]/block[2]/lineArea"/>
+    <!-- cell 1.2 -->
+    <eval expected="20000"                               xpath="//pageViewport[@nr=7]//flow/block[2]/block[3]/@bpd"/>
+    <eval expected="26000"                               xpath="//pageViewport[@nr=7]//flow/block[2]/block[3]/@bpda"/>
+    <eval expected="(solid,#000000,4000,collapse-outer)" xpath="//pageViewport[@nr=7]//flow/block[2]/block[3]/@border-before"/>
+    <eval expected="(solid,#008080,2000,collapse-outer)" xpath="//pageViewport[@nr=7]//flow/block[2]/block[3]/@border-after"/>
+    <!-- page 2 -->
+    <eval expected="2"                             xpath="count(//pageViewport[@nr=8]//flow/block)"/>
+    <eval expected="After the table"                     xpath="//pageViewport[@nr=8]//flow/block[2]/lineArea"/>
+    <eval expected="23000"                               xpath="//pageViewport[@nr=8]//flow/block[1]/@bpd"/>
+    <eval expected="23000"                               xpath="//pageViewport[@nr=8]//flow/block[1]/@bpda"/>
+    <!-- cell 1.1 -->
+    <eval expected="21000"                               xpath="//pageViewport[@nr=8]//flow/block[1]/block[1]/@bpd"/>
+    <eval expected="25000"                               xpath="//pageViewport[@nr=8]//flow/block[1]/block[1]/@bpda"/>
+    <eval expected=""                                    xpath="//pageViewport[@nr=8]//flow/block[1]/block[1]/@border-before"/>
+    <eval expected="(solid,#000000,4000,collapse-outer)" xpath="//pageViewport[@nr=8]//flow/block[1]/block[1]/@border-after"/>
+    <eval expected="21000"                               xpath="//pageViewport[@nr=8]//flow/block[1]/block[2]/@bpd"/>
+    <eval expected="21000"                               xpath="//pageViewport[@nr=8]//flow/block[1]/block[2]/@bpda"/>
+    <eval expected="1"                             xpath="count(//pageViewport[@nr=8]//flow/block[1]/block[2]/block)"/>
+    <eval expected="Cell 1.1 Line 3"                     xpath="//pageViewport[@nr=8]//flow/block[1]/block[2]/block[1]/lineArea"/>
+    <!-- cell 2.2 -->
+    <eval expected="20000"                               xpath="//pageViewport[@nr=8]//flow/block[1]/block[3]/@bpd"/>
+    <eval expected="26000"                               xpath="//pageViewport[@nr=8]//flow/block[1]/block[3]/@bpda"/>
+    <eval expected="(solid,#808000,2000,collapse-outer)" xpath="//pageViewport[@nr=8]//flow/block[1]/block[3]/@border-before"/>
+    <eval expected="(solid,#000000,4000,collapse-outer)" xpath="//pageViewport[@nr=8]//flow/block[1]/block[3]/@border-after"/>
+
   </checks>
 </testcase>
index 3b3b89384e228a14d80a60c98a4c7f549fe82aab..845744e856b00f5fbd608f426f9489527d0d8481 100644 (file)
@@ -60,7 +60,9 @@
     <element-list category="breaker">
       <box w="14400"/>
       <penalty w="0" p="INF"/>
-      <box w="28800"/>
+      <box w="14400"/>
+      <penalty w="0" p="INF"/>
+      <box w="14400"/>
       <penalty w="0" p="0"/>
       <box w="14400"/>
       <skip>3</skip>
index a904a144ae7551a0cb10edb528621ff95a0638fa..927ea64e69f4f068c7c6ba15e681fd409d4dc1a7 100644 (file)
@@ -92,7 +92,7 @@
   <checks>
     <element-list category="table-cell" id="cell1">
       <box w="14400"/>
-      <penalty w="0" p="INF"/> <!-- the keep-together on the table-row has to result in an INFINITE penalty here -->
+      <penalty w="0" p="0"/>
       <box w="14400"/>
     </element-list>
     <element-list category="table-cell" id="cell2">
     <!-- the same again but this time with keep="1" -->
     <element-list category="table-cell" id="cell1b">
       <box w="14400"/>
-      <penalty w="0" p="999"/>
+      <penalty w="0" p="0"/>
       <box w="14400"/>
     </element-list>
     <element-list category="table-cell" id="cell2b">