]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
FOP-3195: Skip written block ipds inside float
authorSimon Steiner <ssteiner@apache.org>
Tue, 30 Jul 2024 10:25:57 +0000 (11:25 +0100)
committerSimon Steiner <ssteiner@apache.org>
Tue, 30 Jul 2024 10:25:57 +0000 (11:25 +0100)
fop-core/src/main/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
fop-core/src/main/java/org/apache/fop/layoutmgr/FloatContentLayoutManager.java
fop/test/layoutengine/standard-testcases/float_10.xml [new file with mode: 0644]

index a3edc2088abd905d2ae67f23d0222c14cb4b18fb..dba4723c938949a19e55c518b666b87276a5220a 100644 (file)
@@ -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} */
index b489760ce843b06abd9674da596de882c58ef3a8..8a82f239848420afbd1b21405f3188bb870abdc1 100644 (file)
@@ -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 (file)
index 0000000..5969c66
--- /dev/null
@@ -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