From edfe1fbf5b9567c70c9648f4a7609dcf82c85e96 Mon Sep 17 00:00:00 2001 From: Jeremias Maerki Date: Thu, 9 Feb 2006 09:20:02 +0000 Subject: [PATCH] Bugfix: Fixed two causes for ClassCastExceptions in BlockContainerLayoutManager. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@376235 13f79535-47bb-0310-9956-ffa450edef68 --- .../BlockContainerLayoutManager.java | 9 +--- status.xml | 3 ++ ...ck-container_element-list-handling-bug.xml | 48 +++++++++++++++++++ 3 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 test/layoutengine/standard-testcases/block-container_element-list-handling-bug.xml diff --git a/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java index 658a92e0d..33c1bdbae 100644 --- a/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java @@ -276,7 +276,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager // get elements from curLM returnedList = curLM.getNextKnuthElements(childLC, alignment); if (returnedList.size() == 1 - && ((KnuthElement)returnedList.getFirst()).isForcedBreak()) { + && ((ListElement)returnedList.getFirst()).isForcedBreak()) { // a descendant of this block has break-before /* if (returnList.size() == 0) { @@ -306,15 +306,10 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager // blocks contentList.add(new BreakElement( new Position(this), KnuthElement.INFINITE, context)); - //contentList.add(new KnuthPenalty(0, - // KnuthElement.INFINITE, false, - // new Position(this), false)); - } else if (!((KnuthElement) contentList.getLast()).isGlue()) { + } else if (!((ListElement) contentList.getLast()).isGlue()) { // add a null penalty to allow a break between blocks contentList.add(new BreakElement( new Position(this), 0, context)); - //contentList.add(new KnuthPenalty(0, 0, false, - // new Position(this), false)); } else { // the last element in contentList is a glue; // it is a feasible breakpoint, there is no need to add diff --git a/status.xml b/status.xml index 89aa4492c..22beced41 100644 --- a/status.xml +++ b/status.xml @@ -27,6 +27,9 @@ + + Bugfix: Fixed two causes for ClassCastExceptions in BlockContainerLayoutManager. + Bugfix: padding-top and padding-bottom on list-items could lead to wrong page break decisions and thus to overlapping text. diff --git a/test/layoutengine/standard-testcases/block-container_element-list-handling-bug.xml b/test/layoutengine/standard-testcases/block-container_element-list-handling-bug.xml new file mode 100644 index 000000000..b34ef9a5e --- /dev/null +++ b/test/layoutengine/standard-testcases/block-container_element-list-handling-bug.xml @@ -0,0 +1,48 @@ + + + + + +

+ This test is a regression test for a bug in block-container which causes a ClassCastException because + BCLM checked for KnuthElements instead of ListElements. +

+
+ + + + + + + + + + + nested content + nested content + + + nested content + + + + + + + + +
-- 2.39.5