]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugfix in Changing IPD: reset only the children LMs that have been created so far...
authorVincent Hennebert <vhennebert@apache.org>
Tue, 24 Nov 2009 14:48:52 +0000 (14:48 +0000)
committerVincent Hennebert <vhennebert@apache.org>
Tue, 24 Nov 2009 14:48:52 +0000 (14:48 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@883709 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/layoutmgr/AbstractLayoutManager.java
test/layoutengine/standard-testcases/flow_changing-ipd_break-before.xml [new file with mode: 0644]

index 82f0599eb12fb9ffe4158a86298235a88588c635..e6a5bea5eff03ff1950b2042382086c343c34794 100644 (file)
@@ -20,6 +20,7 @@
 package org.apache.fop.layoutmgr;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
@@ -463,11 +464,8 @@ public abstract class AbstractLayoutManager extends AbstractBaseLayoutManager
         isFinished = false;
         curChildLM = null;
         childLMiter = new LMiter(this);
-        /*
-         * Reset the children LM. Can't rely on childLMiter since it may have
-         * been set to null in checkEndOfLayout.
-         */
-        for (LMiter iter = new LMiter(this); iter.hasNext();) {
+        /* Reset all the children LM that have been created so far. */
+        for (Iterator iter = getChildLMs().iterator(); iter.hasNext();) {
             ((LayoutManager) iter.next()).reset();
         }
         if (fobj != null) {
diff --git a/test/layoutengine/standard-testcases/flow_changing-ipd_break-before.xml b/test/layoutengine/standard-testcases/flow_changing-ipd_break-before.xml
new file mode 100644 (file)
index 0000000..22e20d9
--- /dev/null
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks that a forced before break following an IPD change is correctly handled.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="narrow"
+          page-height="220pt" page-width="320pt" margin="10pt">
+          <fo:region-body background-color="#F0F0F0"/>
+        </fo:simple-page-master>
+        <fo:simple-page-master master-name="wide"
+          page-height="220pt" page-width="520pt" margin="10pt">
+          <fo:region-body background-color="#F0F0F0"/>
+        </fo:simple-page-master>
+        <fo:page-sequence-master master-name="pages">
+          <fo:single-page-master-reference master-reference="narrow"/>
+          <fo:repeatable-page-master-reference master-reference="wide"/>
+        </fo:page-sequence-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="pages">
+        <fo:flow flow-name="xsl-region-body" language="en" hyphenate="true">
+          <fo:block id="surrounding1" text-align="justify"
+            space-before.minimum="10pt"
+            space-before.optimum="12pt"
+            space-before.maximum="50pt">
+            <fo:block space-before="inherit" id="b1">In olden times when wishing still helped one, 
+              there lived a king whose daughters were all beautiful, but the youngest was so 
+              beautiful that the sun itself, which has seen so much, was astonished whenever it 
+              shone in her face.</fo:block>
+            <fo:block space-before="inherit" id="b2">In olden times when wishing still helped one, 
+              there lived a king whose daughters were all beautiful, but the youngest was so 
+              beautiful that the sun itself, which has seen so much, was astonished whenever it 
+              shone in her face.</fo:block>
+            <fo:block space-before="inherit" id="b3">In olden times when wishing still helped one, 
+              there lived a king whose daughters were all beautiful, but the youngest was so 
+              beautiful that the sun itself, which has seen so much, was astonished whenever it 
+              shone in her face. In olden times when wishing still helped one, there lived a king 
+              whose daughters were all beautiful, but the youngest was so beautiful that the sun 
+              itself, which has seen so much, was astonished whenever it shone in her 
+              face.</fo:block>
+            <fo:block space-before="inherit" id="b4">In olden times when wishing still helped one, 
+              there lived a king whose daughters were all beautiful, but the youngest was so 
+              beautiful that the sun itself, which has seen so much, was astonished whenever it 
+              shone in her face.</fo:block>
+          </fo:block>
+          <fo:block id="surrounding2" text-align="justify" break-before="page"
+            space-before.minimum="10pt"
+            space-before.optimum="12pt"
+            space-before.maximum="50pt">
+            <fo:block space-before="inherit" id="b5">In olden times when wishing still helped one, 
+              there lived a king whose daughters were all beautiful, but the youngest was so 
+              beautiful that the sun itself, which has seen so much, was astonished whenever it 
+              shone in her face.</fo:block>
+            <fo:block space-before="inherit" id="b6">In olden times when wishing still helped one, 
+              there lived a king whose daughters were all beautiful, but the youngest was so 
+              beautiful that the sun itself, which has seen so much, was astonished whenever it 
+              shone in her face.</fo:block>
+          </fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <eval expected="b3"     xpath="//pageViewport[1]//flow/block/block[3]/@prod-id"/>
+    <eval expected="In"     xpath="//pageViewport[1]//flow/block/block[3]/lineArea[4]/text/word[position()=last()]"/>
+    <eval expected="500000" xpath="//pageViewport[2]//flow/block/@ipd"/>
+    <eval expected="500000" xpath="//pageViewport[2]//flow/block/block[1]/@ipd"/>
+    <eval expected="500000" xpath="//pageViewport[2]//flow/block/block[1]/lineArea[1]/@ipd"/>
+    <eval expected="olden"  xpath="//pageViewport[2]//flow/block/block[1]/lineArea[1]/text/word[1]"/>
+    <eval expected="b5"     xpath="//pageViewport[3]//flow/block/block[1]/@prod-id"/>
+    <eval expected="500000" xpath="//pageViewport[3]//flow/block/block[1]/@ipd"/>
+    <eval expected="500000" xpath="//pageViewport[3]//flow/block/block[1]/lineArea[1]/@ipd"/>
+    <eval expected="In"     xpath="//pageViewport[3]//flow/block/block[1]/lineArea[1]/text/word[1]"/>
+  </checks>
+</testcase>