[calligra] libs/textlayout: Fix infinite loop and optimize layout.

Cyrille Berger Skott cberger at cberger.net
Mon May 16 09:27:20 BST 2011


Hi,

It looks like this commit is breaking the TestBlockLayout test:
http://my.cdash.org/testDetails.php?test=6064793&build=187910

On Sunday 15 May 2011, Sebastian Sauer wrote:
> Git commit 9ce2d5e164fa432e07ff6ef565ab97f819b0f507 by Sebastian Sauer.
> Committed on 15/05/2011 at 22:10.
> Pushed by sebsauer into branch 'master'.
> 
> Fix infinite loop and optimize layout.
> This fixes those *SlidesAndHandouts.odt document.
> 
> M  +7    -6    libs/textlayout/KoTextDocumentLayout.cpp
> 
> http://commits.kde.org/calligra/9ce2d5e164fa432e07ff6ef565ab97f819b0f507
> 
> diff --git a/libs/textlayout/KoTextDocumentLayout.cpp
> b/libs/textlayout/KoTextDocumentLayout.cpp index 71f7b91..082d121 100644
> --- a/libs/textlayout/KoTextDocumentLayout.cpp
> +++ b/libs/textlayout/KoTextDocumentLayout.cpp
> @@ -245,12 +245,13 @@ void KoTextDocumentLayout::documentChanged(int
> position, int charsRemoved, int c from = block.position() +
> block.length();
>      }
> 
> -//TODO FIXME make corresponding root area as dirty and then do layout
> -// right now we are just marking all as dirty
> -    foreach (KoTextLayoutRootArea *rootArea, d->rootAreaList) {
> -        if (!rootArea->isDirty())
> -            rootArea->setDirty();
> -    }
> +    // Mark the previous of the corresponding and all following root areas
> as dirty. +    KoTextLayoutRootArea *area = rootAreaForPosition(position);
> +    if (!area)
> +        return;
> +    for(int i = qMax(0, d->rootAreaList.indexOf(area) - 1); i <
> d->rootAreaList.count(); ++i) +        d->rootAreaList[i]->setDirty();
> +
>      emitLayoutIsDirty();
>  }


-- 
Cyrille Berger Skott



More information about the calligra-devel mailing list