diff options
-rw-r--r-- | src/java/org/apache/fop/fo/flow/table/EffRow.java | 2 | ||||
-rw-r--r-- | test/layoutengine/standard-testcases/table-cell_row-span_breaks.xml | 91 |
2 files changed, 92 insertions, 1 deletions
diff --git a/src/java/org/apache/fop/fo/flow/table/EffRow.java b/src/java/org/apache/fop/fo/flow/table/EffRow.java index ac99a1d37..7989f3d9d 100644 --- a/src/java/org/apache/fop/fo/flow/table/EffRow.java +++ b/src/java/org/apache/fop/fo/flow/table/EffRow.java @@ -197,7 +197,7 @@ public class EffRow { int breakAfter = Constants.EN_AUTO; for (Iterator iter = gridUnits.iterator(); iter.hasNext();) { GridUnit gu = (GridUnit) iter.next(); - if (gu.isPrimary()) { + if (!gu.isEmpty() && gu.getColSpanIndex() == 0 && gu.isLastGridUnitRowSpan()) { breakAfter = BreakUtil.compareBreakClasses(breakAfter, gu.getPrimary().getBreakAfter()); } diff --git a/test/layoutengine/standard-testcases/table-cell_row-span_breaks.xml b/test/layoutengine/standard-testcases/table-cell_row-span_breaks.xml index f00d9894d..8f146ece5 100644 --- a/test/layoutengine/standard-testcases/table-cell_row-span_breaks.xml +++ b/test/layoutengine/standard-testcases/table-cell_row-span_breaks.xml @@ -97,6 +97,49 @@ </fo:flow> </fo:page-sequence> + <!-- table 3 --> + <!-- break-after set on a row-spanning cell must actually apply to the last row + spanned by the cell. --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body border="2pt solid blue"> + <fo:table-row border="inherit"> + <fo:table-cell border="inherit" number-rows-spanned="2" border-color="red"> + <fo:block>Cell 1.1 Line 1</fo:block> + <fo:block>Cell 1.1 Line 2</fo:block> + <fo:block break-after="page">Cell 1.1 Line 3</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <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 border="inherit"> + <fo:table-cell border="inherit"> + <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-row border="2pt solid blue"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1 Line 1</fo:block> + <fo:block>Cell 3.1 Line 2</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2 Line 1</fo:block> + <fo:block>Cell 3.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> @@ -193,5 +236,53 @@ <eval expected="Cell 1.2 Line 3" xpath="//pageViewport[@nr='5']//flow/block[1]/block[2]/block[1]"/> <eval expected="Cell 1.2 Line 4" xpath="//pageViewport[@nr='5']//flow/block[1]/block[2]/block[2]"/> + <!-- table 3 --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[3]/pageViewport)"/> + <eval expected="48000" xpath="//pageViewport[@nr='6']//flow/block[2]/@bpd"/> + <eval expected="50000" xpath="//pageViewport[@nr='6']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='6']//flow/block[2]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/@border-after"/> + <eval expected="2" xpath="count(//pageViewport[@nr='6']//flow/block[2]/block[1]/block)"/> + <eval expected="Cell 1.2 Line 1" xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/block[1]"/> + <eval expected="Cell 1.2 Line 2" xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/block[2]"/> + <!-- cell 1.1 --> + <eval expected="44000" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/@bpd"/> + <eval expected="48000" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/@border-after"/> + <eval expected="3" xpath="count(//pageViewport[@nr='6']//flow/block[2]/block[2]/block)"/> + <eval expected="Cell 1.1 Line 1" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/block[1]"/> + <eval expected="Cell 1.1 Line 2" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/block[2]"/> + <eval expected="Cell 1.1 Line 3" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/block[3]"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/@border-after"/> + <eval expected="2" xpath="count(//pageViewport[@nr='6']//flow/block[2]/block[3]/block)"/> + <eval expected="Cell 2.2 Line 1" xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/block[1]"/> + <eval expected="Cell 2.2 Line 2" xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/block[2]"/> + <!-- page 2 --> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[1]/@bpd"/> + <eval expected="26000" xpath="//pageViewport[@nr='7']//flow/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='7']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/block[2]/@border-after"/> + </checks> </testcase> |