aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Steiner <ssteiner@apache.org>2024-07-30 11:25:57 +0100
committerSimon Steiner <ssteiner@apache.org>2024-07-30 11:25:57 +0100
commitf9e031ace069602f5a67222b32e2f1ce3fdc54fc (patch)
treeceb091464a8b26cbf7108d11877b0daa369ecfb0
parent1ce1125e8560afa59b629ba1e9217ceac13f2792 (diff)
downloadxmlgraphics-fop-f9e031ace069602f5a67222b32e2f1ce3fdc54fc.tar.gz
xmlgraphics-fop-f9e031ace069602f5a67222b32e2f1ce3fdc54fc.zip
FOP-3195: Skip written block ipds inside float
-rw-r--r--fop-core/src/main/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java8
-rw-r--r--fop-core/src/main/java/org/apache/fop/layoutmgr/FloatContentLayoutManager.java2
-rw-r--r--fop/test/layoutengine/standard-testcases/float_10.xml57
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