aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/org/apache/fop/layoutmgr/table/ActiveCell.java12
-rw-r--r--test/layoutengine/standard-testcases/table_row-delay.xml72
2 files changed, 79 insertions, 5 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/table/ActiveCell.java b/src/java/org/apache/fop/layoutmgr/table/ActiveCell.java
index d89f43370..c4bff5112 100644
--- a/src/java/org/apache/fop/layoutmgr/table/ActiveCell.java
+++ b/src/java/org/apache/fop/layoutmgr/table/ActiveCell.java
@@ -290,12 +290,14 @@ class ActiveCell {
* @see #signalRowLastStep(int)
*/
private void increaseCurrentStep(int limit) {
- while (afterNextStep.totalLength <= limit && nextStep.breakClass == Constants.EN_AUTO) {
- nextStep.set(afterNextStep);
- if (afterNextStep.end >= elementList.size() - 1) {
- break;
+ if (nextStep.end < elementList.size() - 1) {
+ while (afterNextStep.totalLength <= limit && nextStep.breakClass == Constants.EN_AUTO) {
+ nextStep.set(afterNextStep);
+ if (afterNextStep.end >= elementList.size() - 1) {
+ break;
+ }
+ gotoNextLegalBreak();
}
- gotoNextLegalBreak();
}
}
diff --git a/test/layoutengine/standard-testcases/table_row-delay.xml b/test/layoutengine/standard-testcases/table_row-delay.xml
index a5d88cf46..b3b962da9 100644
--- a/test/layoutengine/standard-testcases/table_row-delay.xml
+++ b/test/layoutengine/standard-testcases/table_row-delay.xml
@@ -231,6 +231,40 @@
</fo:flow>
</fo:page-sequence>
+ <!-- table 5 -->
+ <fo:page-sequence master-reference="page">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block
+ space-after.minimum="175pt"
+ space-after.optimum="180pt"
+ space-after.maximum="185pt">5. Before the table.</fo:block>
+ <fo:table width="100%" table-layout="fixed"
+ border-collapse="separate" border="4pt solid black"
+ font-size="8pt" line-height="10pt">
+ <fo:table-column number-columns-repeated="2" column-width="proportional-column-width(1)"/>
+ <fo:table-body>
+ <fo:table-row>
+ <fo:table-cell border="2pt solid blue">
+ <fo:block>Cell 1.1 Line 1</fo:block>
+ <fo:block>Cell 1.1 Line 2</fo:block>
+ </fo:table-cell>
+ <fo:table-cell border="2pt solid teal" number-rows-spanned="2">
+ <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 green">
+ <fo:block>Cell 2.1 Line 1</fo:block>
+ <fo:block>Cell 2.1 Line 2</fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:flow>
+ </fo:page-sequence>
+
+
</fo:root>
</fo>
<checks>
@@ -433,5 +467,43 @@
<eval expected="(solid,#000000,2000,collapse-outer)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@border-after"/>
<eval expected="5" xpath="count(//pageViewport[@nr='8']//flow/block[1]/block[5]/block)"/>
+ <!-- table 5 -->
+ <!-- page 1 -->
+ <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpd"/>
+ <eval expected="28000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpda"/>
+ <eval expected="(solid,#000000,4000)" xpath="//pageViewport[@nr='9']//flow/block[2]/@border-before"/>
+ <eval expected="" xpath="//pageViewport[@nr='9']//flow/block[2]/@border-after"/>
+ <!-- cell 1.1 -->
+ <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@bpd"/>
+ <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@bpda"/>
+ <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@border-before"/>
+ <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@border-after"/>
+ <eval expected="2" xpath="count(//pageViewport[@nr='9']//flow/block[2]/block[1]/block)"/>
+ <!-- cell 1.2 -->
+ <eval expected="22000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@bpd"/>
+ <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@bpda"/>
+ <eval expected="(solid,#008080,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@border-before"/>
+ <eval expected="" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@border-after"/>
+ <eval expected="2" xpath="count(//pageViewport[@nr='9']//flow/block[2]/block[2]/block)"/>
+ <eval expected="Cell 1.2 Line 1" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/block[1]/lineArea"/>
+ <eval expected="Cell 1.2 Line 2" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/block[2]/lineArea"/>
+ <!-- page 2 -->
+ <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpd"/>
+ <eval expected="28000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpda"/>
+ <eval expected="" xpath="//pageViewport[@nr='10']//flow/block[1]/@border-before"/>
+ <eval expected="(solid,#000000,4000)" xpath="//pageViewport[@nr='10']//flow/block[1]/@border-after"/>
+ <!-- cell 2.1 -->
+ <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@bpd"/>
+ <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@bpda"/>
+ <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@border-before"/>
+ <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@border-after"/>
+ <eval expected="2" xpath="count(//pageViewport[@nr='10']//flow/block[1]/block[1]/block)"/>
+ <!-- cell 1.2 -->
+ <eval expected="22000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@bpd"/>
+ <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@bpda"/>
+ <eval expected="" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@border-before"/>
+ <eval expected="(solid,#008080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@border-after"/>
+ <eval expected="0" xpath="count(//pageViewport[@nr='10']//flow/block[1]/block[2]/block)"/>
+
</checks>
</testcase>