On Sunday 15 May 2011 21:36:48 Sebastian Sauer wrote: > Hi, > > please see following patch for libs/textlayout/KoTextDocumentLayout.cpp to > prevent doing full relayouts just cause we update the page-variable. > > This fixes the infinite loop with the > http://www.zagge.de/anchor/110407/wiki.services.openoffice.org%252Fw%252Fim > ages%252F9%252F91%252F%25305%25308IG3- SlidesNotesHandouts.odt > http://www.zagge.de/anchor/110407/wiki.services.openoffice.org%252Fw%252Fim > ages%252Fe%252Fe6%252F%25303%25304CG- ChartsAndGraphs.odt > > Ok to commit (will remove the #if 0-part + add dox before)? > > diff --git a/libs/textlayout/KoTextDocumentLayout.cpp > b/libs/textlayout/KoTextDocumentLayout.cpp > index 71f7b91..0a5ec61 100644 > --- a/libs/textlayout/KoTextDocumentLayout.cpp > +++ b/libs/textlayout/KoTextDocumentLayout.cpp > @@ -245,12 +245,21 @@ void KoTextDocumentLayout::documentChanged(int > position, int charsRemoved, int c > from = block.position() + block.length(); > } > > +#if 0 > //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(); > } > +#else > + KoTextLayoutRootArea *area = rootAreaForPosition(position); > + if (!area) > + return; > + for(int i = qMax(0, d->rootAreaList.indexOf(area)); i < d- > > >rootAreaList.count(); ++i) > > + d->rootAreaList[i]->setDirty(); > +#endif > + > emitLayoutIsDirty(); > } > > _______________________________________________ > calligra-devel mailing list > calligra-devel@kde.org > https://mail.kde.org/mailman/listinfo/calligra-devel i think it's should be
qMax(0, d->rootAreaList.indexOf(area) - 1) as a change on one page might allow it to fit on the previous page it should also be possible to calc something similar for the last page to loop _______________________________________________ calligra-devel mailing list calligra-devel@kde.org https://mail.kde.org/mailman/listinfo/calligra-devel