Kaydet (Commit) e6f5dec3 authored tarafından Justin Luth's avatar Justin Luth Kaydeden (comit) Miklos Vajna

tdf121374 ooxmlexport: export H/F to default section

It wouldn't be terrible to duplicate headers/footers
unnecessarily, but it is terrible to have them disappear.
If the last SectPr has no idea about the section start,
it can't know whether it is continuous or started with
a page break. In that case, just ensure that the
header and footer are explicitly written out.

Change-Id: Iff54ed097b4f8692d7d7764089002b00fbde4f51
Reviewed-on: https://gerrit.libreoffice.org/64821
Tested-by: Jenkins
Reviewed-by: 's avatarJustin Luth <justin_luth@sil.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/65363
üst cd70a461
...@@ -15085,6 +15085,7 @@ sw/qa/extras/ooxmlexport/ooxmlencryption.cxx ...@@ -15085,6 +15085,7 @@ sw/qa/extras/ooxmlexport/ooxmlencryption.cxx
sw/qa/extras/ooxmlexport/ooxmlexport.cxx sw/qa/extras/ooxmlexport/ooxmlexport.cxx
sw/qa/extras/ooxmlexport/ooxmlexport10.cxx sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
sw/qa/extras/ooxmlexport/ooxmlexport11.cxx sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
sw/qa/extras/ooxmlexport/ooxmlexport2.cxx sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
sw/qa/extras/ooxmlexport/ooxmlexport3.cxx sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
sw/qa/extras/ooxmlexport/ooxmlexport4.cxx sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
......
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#*************************************************************************
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
#*************************************************************************
$(eval $(call sw_ooxmlexport_test,13))
# vim: set noet sw=4 ts=4:
...@@ -73,6 +73,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\ ...@@ -73,6 +73,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_ooxmlexport10 \ CppunitTest_sw_ooxmlexport10 \
CppunitTest_sw_ooxmlexport11 \ CppunitTest_sw_ooxmlexport11 \
CppunitTest_sw_ooxmlexport12 \ CppunitTest_sw_ooxmlexport12 \
CppunitTest_sw_ooxmlexport13 \
CppunitTest_sw_ooxmlfieldexport \ CppunitTest_sw_ooxmlfieldexport \
CppunitTest_sw_ooxmllinks \ CppunitTest_sw_ooxmllinks \
CppunitTest_sw_ooxmlw14export \ CppunitTest_sw_ooxmlw14export \
......
This diff was suppressed by a .gitattributes entry.
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <swmodeltestbase.hxx>
#include <com/sun/star/awt/Size.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/text/XTextFrame.hpp>
#include <com/sun/star/text/XTextFramesSupplier.hpp>
#include <sfx2/docfile.hxx>
#include <sfx2/docfilt.hxx>
#include <svx/xfillit0.hxx>
class Test : public SwModelTestBase
{
public:
Test() : SwModelTestBase("/sw/qa/extras/ooxmlexport/data/", "Office Open XML Text") {}
protected:
/**
* Blacklist handling
*/
bool mustTestImportOf(const char* filename) const override {
// If the testcase is stored in some other format, it's pointless to test.
return OString(filename).endsWith(".docx");
}
};
DECLARE_OOXMLEXPORT_TEST(testTdf121374_sectionHF, "tdf121374_sectionHF.odt")
{
uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
uno::Reference<text::XTextRange> xFooterText = getProperty< uno::Reference<text::XTextRange> >(xPageStyle, "FooterText");
CPPUNIT_ASSERT_EQUAL( OUString("footer"), xFooterText->getString() );
CPPUNIT_ASSERT_EQUAL_MESSAGE( "Number of Paragraphs", 6, getParagraphs() );
//CPPUNIT_ASSERT_EQUAL_MESSAGE( "Number of Pages", 6, getPages() );
}
DECLARE_OOXMLEXPORT_TEST(testTdf121374_sectionHF2, "tdf121374_sectionHF2.doc")
{
uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
uno::Reference<text::XTextRange> xHeaderText = getProperty< uno::Reference<text::XTextRange> >(xPageStyle, "HeaderText");
CPPUNIT_ASSERT( xHeaderText->getString().startsWith("virkamatka-anomus") );
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -1035,7 +1035,8 @@ DECLARE_OOXMLEXPORT_TEST(testSectionHeader, "sectionprot.odt") ...@@ -1035,7 +1035,8 @@ DECLARE_OOXMLEXPORT_TEST(testSectionHeader, "sectionprot.odt")
{ {
if (xmlDocPtr pXmlDoc = parseExport("word/document.xml")) if (xmlDocPtr pXmlDoc = parseExport("word/document.xml"))
{ {
assertXPath(pXmlDoc, "//w:headerReference", 1); // this test must not be zero
assertXPath(pXmlDoc, "//w:headerReference", 2);
} }
} }
......
...@@ -1537,6 +1537,7 @@ void MSWordExportBase::SectionProperties( const WW8_SepInfo& rSepInfo, WW8_PdAtt ...@@ -1537,6 +1537,7 @@ void MSWordExportBase::SectionProperties( const WW8_SepInfo& rSepInfo, WW8_PdAtt
*/ */
sal_uInt8 nBreakCode = 2; // default start new page sal_uInt8 nBreakCode = 2; // default start new page
bool bOutPgDscSet = true, bLeftRightPgChain = false, bOutputStyleItemSet = false; bool bOutPgDscSet = true, bLeftRightPgChain = false, bOutputStyleItemSet = false;
bool bEnsureHeaderFooterWritten = rSepInfo.pSectionFormat && rSepInfo.bIsFirstParagraph;
const SwFrameFormat* pPdFormat = &pPd->GetMaster(); const SwFrameFormat* pPdFormat = &pPd->GetMaster();
if ( rSepInfo.pSectionFormat ) if ( rSepInfo.pSectionFormat )
{ {
...@@ -1553,7 +1554,9 @@ void MSWordExportBase::SectionProperties( const WW8_SepInfo& rSepInfo, WW8_PdAtt ...@@ -1553,7 +1554,9 @@ void MSWordExportBase::SectionProperties( const WW8_SepInfo& rSepInfo, WW8_PdAtt
} }
} }
if ( reinterpret_cast<SwSectionFormat*>(sal_IntPtr(-1)) != rSepInfo.pSectionFormat ) if ( reinterpret_cast<SwSectionFormat*>(sal_IntPtr(-1)) == rSepInfo.pSectionFormat )
bEnsureHeaderFooterWritten |= !rSepInfo.pPDNd && GetExportFormat() == ExportFormat::DOCX;
else
{ {
if ( nBreakCode == 0 ) if ( nBreakCode == 0 )
bOutPgDscSet = false; bOutPgDscSet = false;
...@@ -1715,7 +1718,7 @@ void MSWordExportBase::SectionProperties( const WW8_SepInfo& rSepInfo, WW8_PdAtt ...@@ -1715,7 +1718,7 @@ void MSWordExportBase::SectionProperties( const WW8_SepInfo& rSepInfo, WW8_PdAtt
: &pPd->GetLeft(); : &pPd->GetLeft();
// Ensure that headers are written if section is first paragraph // Ensure that headers are written if section is first paragraph
if ( nBreakCode != 0 || ( rSepInfo.pSectionFormat && rSepInfo.bIsFirstParagraph )) if ( nBreakCode != 0 || bEnsureHeaderFooterWritten )
{ {
if ( titlePage ) if ( titlePage )
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment