sw/qa/extras/ooxmlexport/data/sdt-ignored-footer.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 9 +++++++++ writerfilter/source/dmapper/DomainMapper.cxx | 6 ++++++ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 5 +++++ writerfilter/source/dmapper/DomainMapper_Impl.hxx | 2 ++ 5 files changed, 22 insertions(+)
New commits: commit ce5dd8647083c944fb298c491fb526dad17a8a1a Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Sep 22 10:42:41 2014 +0200 DOCX import: ignore SDT as well in to-be-discarded header/footer Change-Id: I53388e8b8ca71a3ad5d0b3e22dd60c642cb1f4b7 diff --git a/sw/qa/extras/ooxmlexport/data/sdt-ignored-footer.docx b/sw/qa/extras/ooxmlexport/data/sdt-ignored-footer.docx new file mode 100644 index 0000000..8330291 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/sdt-ignored-footer.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 953a036..0bb68e8 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -242,6 +242,15 @@ DECLARE_OOXMLEXPORT_TEST(testTableAlignment, "table-alignment.docx") CPPUNIT_ASSERT_EQUAL(text::HoriOrientation::RIGHT, getProperty<sal_Int16>(xTable, "HoriOrient")); } +DECLARE_OOXMLEXPORT_TEST(testSdtIgnoredFooter, "sdt-ignored-footer.docx") +{ + if (xmlDocPtr pXmlDoc = parseExport("word/document.xml")) + { + // This was 1, make sure no w:sdt sneaks into the main document from the footer. + assertXPath(pXmlDoc, "//w:sdt", 0); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 5fd818c..6d07ca6 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2976,6 +2976,12 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len) { // there are unsupported SDT properties in the document // save them in the paragraph interop grab bag + if (m_pImpl->IsDiscardHeaderFooter()) + { + // Unless we're supposed to ignore this header/footer. + m_pImpl->m_pSdtHelper->getInteropGrabBagAndClear(); + return; + } if((m_pImpl->m_pSdtHelper->containedInInteropGrabBag("ooxml:CT_SdtPr_checkbox") || m_pImpl->m_pSdtHelper->containedInInteropGrabBag("ooxml:CT_SdtPr_text") || m_pImpl->m_pSdtHelper->containedInInteropGrabBag("ooxml:CT_SdtPr_dataBinding") || diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 657c279..7e68473 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -2034,6 +2034,11 @@ bool DomainMapper_Impl::IsSdtEndBefore() return bIsSdtEndBefore; } +bool DomainMapper_Impl::IsDiscardHeaderFooter() +{ + return m_bDiscardHeaderFooter; +} + sal_Int16 lcl_ParseNumberingType( const OUString& rCommand ) { sal_Int16 nRet = style::NumberingType::PAGE_DESCRIPTOR; diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 2376f3c..2360a46 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -827,6 +827,8 @@ public: /// Check if "SdtEndBefore" property is set bool IsSdtEndBefore(); + bool IsDiscardHeaderFooter(); + private: void PushPageHeaderFooter(bool bHeader, SectionPropertyMap::PageType eType); std::vector<css::uno::Reference< css::drawing::XShape > > m_vTextFramesForChaining ; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits