Review Request 120250: Change blockLayout return to be more explicit
Pierre
pinaraf at pinaraf.info
Wed Sep 17 21:16:35 BST 2014
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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 213 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/calligra-devel/attachments/20140917/1c03ab9e/attachment.sig>
More information about the calligra-devel
mailing list