On Wednesday, September 17, 2014 08:09:24 PM Pierre Ducroquet wrote: > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://git.reviewboard.kde.org/r/120250/ > ----------------------------------------------------------- > > Review request for Calligra. > > > Bugs: 306000 > http://bugs.kde.org/show_bug.cgi?id=306000 > > > Repository: calligra > > > Description > ------- > > Returns an enum instead of a boolean and relying on an integer value aside. > This allows the backtrack code to know that a layout ended because of a page > break, and thus not follow the keep with next instead of ending up in an > infinite loop. > > With that patch, we still have a difference between us and LibreOffice 4.3, a > check of the OpenDocument specification will perhaps help : they decide to > just skip the page break when it is in a keep with next block.
FYI, a patch implementing that way of layouting the text is much simpler : index 3a1fa57..bd317b1 100644 --- a/libs/textlayout/KoTextLayoutArea.cpp +++ b/libs/textlayout/KoTextLayoutArea.cpp @@ -1226,10 +1226,12 @@ bool KoTextLayoutArea::layoutBlock(FrameIterator *cursor) c1.setPosition(c1.position() + 1, QTextCursor::KeepAnchor); KoTextSoftPageBreak *softPageBreak = dynamic_cast<KoTextSoftPageBreak*>(d->documentLayout->inlineTextObjectManager()- >inlineTextObject(c1)); - bool keepWithNext = block.blockFormat().boolProperty(KoParagraphStyle::KeepWithNext); - if (softPageBreak && !keepWithNext) { - softBreakPos = pos; - break; + if (softPageBreak) { + QTextBlock previousBlock = block.previous(); + if (!previousBlock.isValid() || !previousBlock.blockFormat().boolProperty(KoParagraphStyle::KeepWithNext)) { + softBreakPos = pos; + break; + } } pos = text.indexOf(QChar::ObjectReplacementCharacter, pos + 1); I'll try to dig up from OpenDocument specification a recommendation regarding the proper way of handling that, if there is any.
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ calligra-devel mailing list calligra-devel@kde.org https://mail.kde.org/mailman/listinfo/calligra-devel