[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/calligra/2.9] /: Fix crash with some cases of pagebreak, and make page break work correctl
From: C. Boemann <cbo () boemann ! dk>
Date: 2015-06-30 21:25:34
Message-ID: E1ZA326-0005HN-LJ () scm ! kde ! org
[Download RAW message or body]
Git commit 530bf6ca8e8d873c0c2feaf0d66db8536cf0068e by C. Boemann.
Committed on 30/06/2015 at 19:55.
Pushed by boemann into branch 'calligra/2.9'.
Fix crash with some cases of pagebreak, and make page break work correctly on \
multicolumn pages
M +4 -1 libs/textlayout/KoTextDocumentLayout.cpp
M +5 -2 words/part/KWRootAreaProvider.cpp
http://commits.kde.org/calligra/530bf6ca8e8d873c0c2feaf0d66db8536cf0068e
diff --git a/libs/textlayout/KoTextDocumentLayout.cpp \
b/libs/textlayout/KoTextDocumentLayout.cpp index 73c4432..54e3b5e 100644
--- a/libs/textlayout/KoTextDocumentLayout.cpp
+++ b/libs/textlayout/KoTextDocumentLayout.cpp
@@ -734,7 +734,10 @@ RootAreaConstraint constraintsForPosition(QTextFrame::iterator \
it, bool previous }
constraints.newPageForced = \
table->frameFormat().intProperty(KoTableStyle::BreakBefore) == KoText::PageBreak; }
-
+
+ if (!constraints.masterPageName.isEmpty()) {
+ constraints.newPageForced = true;
+ }
if (previousIsValid && !constraints.newPageForced) {
it--;
block = it.currentBlock();
diff --git a/words/part/KWRootAreaProvider.cpp b/words/part/KWRootAreaProvider.cpp
index f4e0c13..cc899d5 100644
--- a/words/part/KWRootAreaProvider.cpp
+++ b/words/part/KWRootAreaProvider.cpp
@@ -155,12 +155,14 @@ KoTextLayoutRootArea* \
KWRootAreaProvider::provideNext(KoTextDocumentLayout *docu
int pageNumber = 1;
KWRootAreaPage *rootAreaPage = m_pages.isEmpty() ? 0 : m_pages.last();
-
int requiredRootAreaCount = 1;
if (rootAreaPage && frameSet()->textFrameSetType() == Words::MainTextFrameSet) {
Q_ASSERT(rootAreaPage->page.isValid());
Q_ASSERT(rootAreaPage->page.pageStyle().isValid());
requiredRootAreaCount = rootAreaPage->page.pageStyle().columns().count;
+ if (constraints.newPageForced) {
+ requiredRootAreaCount = 1;
+ }
}
if (rootAreaPage && rootAreaPage->rootAreas.count() < requiredRootAreaCount) {
pageNumber = m_pages.count(); // the root-area is still on the same page
@@ -294,7 +296,7 @@ KoTextLayoutRootArea \
*KWRootAreaProvider::provide(KoTextDocumentLayout* document
QString reallyNeededPageStyle = constraints.masterPageName;
int visiblePageNumber = constraints.visiblePageNumber;
-
+ bool newPageForced = constraints.newPageForced;
if (m_rootAreaCache.size() > requestedPosition)
{
KoTextLayoutRootArea *rootArea = m_rootAreaCache[requestedPosition];
@@ -353,6 +355,7 @@ KoTextLayoutRootArea \
*KWRootAreaProvider::provide(KoTextDocumentLayout* document RootAreaConstraint \
realConstraints; realConstraints.masterPageName = reallyNeededPageStyle;
realConstraints.visiblePageNumber = visiblePageNumber;
+ realConstraints.newPageForced = newPageForced;
KoTextLayoutRootArea *area = 0;
do {
area = provideNext(documentLayout, realConstraints);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic