From df580155b427e37a03016d6ec3ac72e4842f3d5f Mon Sep 17 00:00:00 2001 From: Simon Pepping Date: Tue, 11 Oct 2005 20:42:53 +0000 Subject: [PATCH] Take the case into account when another LM starts a block sequence. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@312954 13f79535-47bb-0310-9956-ffa450edef68 --- .../layoutmgr/inline/LineLayoutManager.java | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java index 652b585c4..d95525380 100644 --- a/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java @@ -695,25 +695,43 @@ public class LineLayoutManager extends InlineStackingLayoutManager if (returnedList.size() == 0) { continue; } - // does the first element of the first paragraph add to an existing word? + if (lastPar != null) { - Object obj = returnedList.getFirst(); - KnuthElement thisElement; - if (obj instanceof KnuthElement) { - thisElement = (KnuthElement)obj; - } else { - KnuthSequence firstSeq = (KnuthSequence) obj; - if (!firstSeq.isInlineSequence()) { - log.error("Expect inline sequence as first sequence when last paragraph is not null"); + Object firstObj; + KnuthSequence firstSeq = null; + firstObj = returnedList.getFirst(); + if (firstObj instanceof KnuthSequence) { + firstSeq = (KnuthSequence) firstObj; + } + + // finish last paragraph before a new block sequence + if (firstSeq != null && !firstSeq.isInlineSequence()) { + lastPar.endParagraph(); + ElementListObserver.observe(lastPar, "line", null); + lastPar = null; + if (log.isTraceEnabled()) { + trace.append(" ]"); } - thisElement = (KnuthElement) firstSeq.get(0); + bPrevWasKnuthBox = false; } - if (thisElement.isBox() && !thisElement.isAuxiliary() - && bPrevWasKnuthBox) { - lastPar.addALetterSpace(); + + // does the first element of the first paragraph add to an existing word? + if (lastPar != null) { + KnuthElement thisElement; + if (firstObj instanceof KnuthElement) { + thisElement = (KnuthElement) firstObj; + } else { + thisElement = (KnuthElement) firstSeq.get(0); + } + if (thisElement.isBox() && !thisElement.isAuxiliary() + && bPrevWasKnuthBox) { + lastPar.addALetterSpace(); + } } + } + // loop over the KnuthSequences (and single KnuthElements) in returnedList // (LeafNodeLM descendants may also skip wrapping elements in KnuthSequences // to cause fewer container structures) -- 2.39.5