[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