diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2018-12-19 00:35:32 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2018-12-19 09:47:33 +0100 |
commit | ec928ac5d84273b4bc1f923c545834dc59d3e394 (patch) | |
tree | 9bcc8e4c5b98c018b4fd4ed338a6dbf6661f6818 /sw/qa/extras/mailmerge | |
parent | 7d8bce646d53d77405b45a50fc6e889ccd0c10e9 (diff) |
tdf#121168: Ensure page descriptions are correct in work document
When first node on a page is a section, then creation of a copy with
lcl_CreateWorkingDocument initially produces a document with layout
frames having wrong page descriptions applied (set to "Default Style").
The reason is that when SfxViewFrame::LoadHiddenDocument indirectly
calls SwRootFrame::Init, the sections in the document have hidden
flag set, which causes SwNodes::GoNextSection return the first node
after the first section. The returned node naturally doesn't have a
page description set, thus the initialized page frame doesn't get it.
This makes following copy to destination document use that wrong style;
if the correct page style had header/footer, then it would not be
properly copied per record in single-document output; headers/footers
would be wrong/absent.
This change forces check of page descriptions after the work document
had been created and initialized.
Change-Id: Ic196eb7fac0241f002eddd2c1d1b66dfb489bc60
Reviewed-on: https://gerrit.libreoffice.org/65383
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sw/qa/extras/mailmerge')
-rw-r--r-- | sw/qa/extras/mailmerge/data/section_ps.odt | bin | 0 -> 9011 bytes | |||
-rw-r--r-- | sw/qa/extras/mailmerge/mailmerge.cxx | 33 |
2 files changed, 33 insertions, 0 deletions
diff --git a/sw/qa/extras/mailmerge/data/section_ps.odt b/sw/qa/extras/mailmerge/data/section_ps.odt Binary files differnew file mode 100644 index 000000000000..dd9704845fac --- /dev/null +++ b/sw/qa/extras/mailmerge/data/section_ps.odt diff --git a/sw/qa/extras/mailmerge/mailmerge.cxx b/sw/qa/extras/mailmerge/mailmerge.cxx index 12fe9cade56b..1e1d94efb572 100644 --- a/sw/qa/extras/mailmerge/mailmerge.cxx +++ b/sw/qa/extras/mailmerge/mailmerge.cxx @@ -1055,5 +1055,38 @@ DECLARE_FILE_MAILMERGE_TEST(testTdf122156_file, "linked-with-condition.odt", "5- } } +DECLARE_SHELL_MAILMERGE_TEST(testTdf121168, "section_ps.odt", "4_v01.ods", "Tabelle1") +{ + // A document starting with a section on a page with non-default page style with header + executeMailMerge(); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxMMComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + // 4 documents 1 page each, starting at odd page numbers => 7 + CPPUNIT_ASSERT_EQUAL(sal_uInt16(7), pTextDoc->GetDocShell()->GetWrtShell()->GetPhyPageNum()); + + SwDoc* pDocMM = pTextDoc->GetDocShell()->GetDoc(); + sal_uLong nSizeMM = pDocMM->GetNodes().GetEndOfContent().GetIndex() + - pDocMM->GetNodes().GetEndOfExtras().GetIndex() - 2; + CPPUNIT_ASSERT_EQUAL(sal_uLong(16), nSizeMM); + + // All even pages should be empty, all sub-documents have one page + const SwRootFrame* pLayout = pDocMM->getIDocumentLayoutAccess().GetCurrentLayout(); + const SwPageFrame* pPageFrm = static_cast<const SwPageFrame*>(pLayout->Lower()); + while (pPageFrm) + { + sal_uInt16 nPageNum = pPageFrm->GetPhyPageNum(); + bool bOdd = (1 == (nPageNum % 2)); + CPPUNIT_ASSERT_EQUAL(!bOdd, pPageFrm->IsEmptyPage()); + CPPUNIT_ASSERT_EQUAL(sal_uInt16(bOdd ? 1 : 2), pPageFrm->GetVirtPageNum()); + if (bOdd) + { + const SwPageDesc* pDesc = pPageFrm->GetPageDesc(); + CPPUNIT_ASSERT_EQUAL(OUString("Teststyle" + OUString::number(nPageNum / 2 + 1)), + pDesc->GetName()); + } + pPageFrm = static_cast<const SwPageFrame*>(pPageFrm->GetNext()); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |