diff options
author | Justin Luth <justin_luth@sil.org> | 2016-09-07 19:26:30 +0300 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-09-21 09:58:16 +0000 |
commit | 81cab3d5de9e05bde456f96356379a3b6033bc7f (patch) | |
tree | 74a737568e8a62dab77bb26b1988e20108eff821 | |
parent | 6a361f874debed3863b55f741552faf8170d19bc (diff) |
tdf#81345 docx import fix default page break regression
"regression" from 4e653d15eff26aa5283d8ba20611893f4c573f57
If there are new style elements, then don't treat a
default break in columns as a continuous break.
This fixes both round-tripping, and initial import of
columns and headers on this particular document. Since
MS and LO treat sections so differently, it is a balancing
act of what to change.
Change-Id: I9c79bc1246108da6a5ebbf744acbcfcbb9d33d48
Reviewed-on: https://gerrit.libreoffice.org/28728
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Justin Luth <justin_luth@sil.org>
(cherry picked from commit 3870c0555aa461268a6d056543f4545d562769ce)
Reviewed-on: https://gerrit.libreoffice.org/28855
Tested-by: Yousuf Philips <philipz85@hotmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf81345.docx | bin | 0 -> 221506 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport4.cxx | 12 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyMap.cxx | 7 |
3 files changed, 17 insertions, 2 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf81345.docx b/sw/qa/extras/ooxmlexport/data/tdf81345.docx Binary files differnew file mode 100644 index 000000000000..4f18b1eeade5 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf81345.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx index 21e288bc597d..f763598bb6bd 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx @@ -959,6 +959,18 @@ DECLARE_OOXMLEXPORT_TEST(testTdf92521, "tdf92521.odt") assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:pPr/w:sectPr", 1); } +DECLARE_OOXMLEXPORT_TEST(testTdf81345_045Original,"tdf81345.docx") +{ + //Header wasn't replaced and columns were missing because no new style was created. + uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY); + uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY); + + xCursor->jumpToPage(2); + OUString pageStyleName = getProperty<OUString>(xCursor, "PageStyleName"); + CPPUNIT_ASSERT(pageStyleName != "Standard"); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx index 83e2934f30f6..5f4855f472d2 100644 --- a/writerfilter/source/dmapper/PropertyMap.cxx +++ b/writerfilter/source/dmapper/PropertyMap.cxx @@ -1137,9 +1137,12 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl ) } // depending on the break type no page styles should be created - // If the section type is missing, but we have columns, then this should be + // If the section type is missing, but we have columns without new style info, then this should be // handled as a continuous section break. - if(m_nBreakType == static_cast<sal_Int32>(NS_ooxml::LN_Value_ST_SectionMark_continuous) || (m_nBreakType == -1 && m_nColumnCount > 0)) + const bool bTreatAsContinuous = m_nBreakType == -1 + && m_nColumnCount > 0 + && (m_bIsFirstSection || m_sFollowPageStyleName.isEmpty() || (m_sFirstPageStyleName.isEmpty() && m_bTitlePage)); + if(m_nBreakType == static_cast<sal_Int32>(NS_ooxml::LN_Value_ST_SectionMark_continuous) || bTreatAsContinuous) { //todo: insert a section or access the already inserted section uno::Reference< beans::XPropertySet > xSection = |