Browse Source

Bugfix: make sure all of the children elements are re-laid out after an IPD change

Removed cast into BlockLM now that the special getNextKnuthElements has been defined in LayoutManager


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_ChangingIPDHack@796666 13f79535-47bb-0310-9956-ffa450edef68
Temp_ChangingIPDHack
Vincent Hennebert 15 years ago
parent
commit
a09f0e2336

+ 3
- 4
src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java View File

@@ -396,6 +396,7 @@ public abstract class BlockStackingLayoutManager extends AbstractLayoutManager
assert restartAtLM != null && restartAtLM.getParent() == this;
currentChildLM = restartAtLM;
currentChildLM.reset();
setCurrentChildLM(currentChildLM);

childrenElements = getNextChildElements(currentChildLM, context, childLC,
alignment);
@@ -570,11 +571,9 @@ public abstract class BlockStackingLayoutManager extends AbstractLayoutManager
if (childLM instanceof LineLayoutManager) {
return ((LineLayoutManager) childLM).getNextKnuthElements(childLC, alignment,
(LeafPosition) restartPosition);
} else if (childLM instanceof BlockLayoutManager) {
return ((BlockLayoutManager) childLM).getNextKnuthElements(childLC, alignment,
lmStack, restartPosition, restartAtLM);
} else {
throw new UnsupportedOperationException("TODO: layout manager not restartable");
return childLM.getNextKnuthElements(childLC, alignment,
lmStack, restartPosition, restartAtLM);
}
}
}

+ 6
- 2
test/layoutengine/standard-testcases/flow_changing-ipd_3.xml View File

@@ -74,9 +74,13 @@
<checks>
<eval expected="face." xpath="//pageViewport[1]//flow/block/block[3]/lineArea[4]/text/word[position()=last()]"/>
<eval expected="12000" xpath="//pageViewport[2]//flow/block/block[1]/@space-before"/>
<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="(solid,#000000,1000)"
xpath="//pageViewport[2]//flow/block/block[1]/@border-before"/>
<eval expected="In" xpath="//pageViewport[1]//flow/block/block[1]/lineArea[1]/text/word[1]"/>
<eval expected="olden" xpath="//pageViewport[1]//flow/block/block[1]/lineArea[1]/text/word[2]"/>
<eval expected="In" xpath="//pageViewport[2]//flow/block/block[1]/lineArea[1]/text/word[1]"/>
<eval expected="olden" xpath="//pageViewport[2]//flow/block/block[1]/lineArea[1]/text/word[2]"/>
<eval expected="500000" xpath="//pageViewport[2]//flow/block/block[2]/@ipd"/>
<eval expected="500000" xpath="//pageViewport[2]//flow/block/block[2]/lineArea[1]/@ipd"/>
</checks>
</testcase>

Loading…
Cancel
Save