diff options
author | Simon Steiner <ssteiner@apache.org> | 2024-07-30 11:25:57 +0100 |
---|---|---|
committer | Simon Steiner <ssteiner@apache.org> | 2024-07-30 11:25:57 +0100 |
commit | f9e031ace069602f5a67222b32e2f1ce3fdc54fc (patch) | |
tree | ceb091464a8b26cbf7108d11877b0daa369ecfb0 | |
parent | 1ce1125e8560afa59b629ba1e9217ceac13f2792 (diff) | |
download | xmlgraphics-fop-f9e031ace069602f5a67222b32e2f1ce3fdc54fc.tar.gz xmlgraphics-fop-f9e031ace069602f5a67222b32e2f1ce3fdc54fc.zip |
FOP-3195: Skip written block ipds inside float
3 files changed, 59 insertions, 8 deletions
diff --git a/fop-core/src/main/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java b/fop-core/src/main/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java index a3edc2088..dba4723c9 100644 --- a/fop-core/src/main/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java +++ b/fop-core/src/main/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java @@ -209,14 +209,8 @@ public abstract class AbstractBaseLayoutManager "getContentAreaIPD() called when it should have been overridden"); } - /** - * {@inheritDoc} - * <i>NOTE: Should be overridden by subclasses. - * Default implementation throws an <code>UnsupportedOperationException</code>.</i> - */ public int getContentAreaBPD() { - throw new UnsupportedOperationException( - "getContentAreaBPD() called when it should have been overridden"); + return 0; } /** {@inheritDoc} */ diff --git a/fop-core/src/main/java/org/apache/fop/layoutmgr/FloatContentLayoutManager.java b/fop-core/src/main/java/org/apache/fop/layoutmgr/FloatContentLayoutManager.java index b489760ce..8a82f2398 100644 --- a/fop-core/src/main/java/org/apache/fop/layoutmgr/FloatContentLayoutManager.java +++ b/fop-core/src/main/java/org/apache/fop/layoutmgr/FloatContentLayoutManager.java @@ -113,7 +113,7 @@ public class FloatContentLayoutManager extends SpacedBorderedPaddedBlockLayoutMa for (LayoutManager childLM : childLMs) { if (childLM instanceof TableLayoutManager) { ipd += childLM.getContentAreaIPD(); - } else { + } else if (childLM.getContentAreaBPD() != -1) { ipd += getContentAreaIPD(childLM.getChildLMs()); } } diff --git a/fop/test/layoutengine/standard-testcases/float_10.xml b/fop/test/layoutengine/standard-testcases/float_10.xml new file mode 100644 index 000000000..5969c6626 --- /dev/null +++ b/fop/test/layoutengine/standard-testcases/float_10.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<testcase> + <info> + <p> + Test position of float containing tables + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"> + <fo:layout-master-set> + <fo:simple-page-master margin-top="0.5in" margin-bottom="0.5in" master-name="LetterPage" margin-right="0.5in" margin-left="0.5in" page-width="8.5in" page-height="11in"> + <fo:region-body margin-top="3.3in" region-name="LetterPageBody" margin-bottom="2in" /> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence format="1" master-reference="LetterPage"> + <fo:flow flow-name="LetterPageBody"> + <fo:block> + <fo:float space-before="2in" float="right"> + <fo:block> + <fo:block-container height="1.85in" width="2.5in"> + <fo:block> + <fo:table table-layout="fixed" width="100%"> + <fo:table-column column-width="proportional-column-width(100)" column-number="1"/> + <fo:table-body> + <fo:table-row> + <fo:table-cell> + <fo:block>Visit My Account</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:table table-layout="fixed" width="100%"> + <fo:table-column column-width="proportional-column-width(100)" column-number="1"/> + <fo:table-body> + <fo:table-row> + <fo:table-cell> + <fo:block> + <fo:leader/> + </fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + </fo:block> + </fo:block-container> + </fo:block> + </fo:float> + </fo:block> + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + <checks> + <eval expected="180000" xpath="//block[2]/@ipd" /> + <eval expected="Visit" xpath="//block[2]//word" /> + </checks> +</testcase>
\ No newline at end of file |