sc/source/filter/xml/XMLTableMasterPageExport.cxx |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

New commits:
commit b6ed0378b4ae893c7631f36d754497a1162244b5
Author:     Eike Rathke <er...@redhat.com>
AuthorDate: Wed Nov 2 00:12:30 2022 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Wed Nov 2 09:34:21 2022 +0100

    Resolves: tdf#147141 style:header-first/footer-first only ODF 
1.3|1.2-extended
    
    For ODF 1.2-extended write with loext namespace, for ODF 1.2 and
    earlier do not write them at all.
    
    LO versions <7.2.5 not having the fix for tdf#144940 need ODF 1.2
    written (without header-first and footer-first) to not lose the
    header/footer.
    
    Change-Id: Id856459eac487ddd8ba0c6963db5d4e227d82093
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142127
    Reviewed-by: Eike Rathke <er...@redhat.com>
    Tested-by: Jenkins
    (cherry picked from commit 71081a2a79a7b5a1eefec60fc687c533a95d190d)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142140
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/source/filter/xml/XMLTableMasterPageExport.cxx 
b/sc/source/filter/xml/XMLTableMasterPageExport.cxx
index 59b29378ea16..61899e651e53 100644
--- a/sc/source/filter/xml/XMLTableMasterPageExport.cxx
+++ b/sc/source/filter/xml/XMLTableMasterPageExport.cxx
@@ -68,6 +68,17 @@ void XMLTableMasterPageExport::exportHeaderFooter(const 
css::uno::Reference < cs
     if( !xHeaderFooter.is() )
         return;
 
+    sal_uInt16 nNameSpace = XML_NAMESPACE_STYLE;
+    if (aName == XML_HEADER_FIRST || aName == XML_FOOTER_FIRST)
+    {
+        // Since ODF 1.3 OFFICE-3789 or 1.2-extended.
+        auto const nVersion(GetExport().getSaneDefaultVersion());
+        if (nVersion <= SvtSaveOptions::ODFSVER_012)
+            return;
+        if (nVersion < SvtSaveOptions::ODFSVER_013)
+            nNameSpace = XML_NAMESPACE_LO_EXT;
+    }
+
     Reference < XText > xCenter(xHeaderFooter->getCenterText());
     Reference < XText > xLeft(xHeaderFooter->getLeftText());
     Reference < XText > xRight(xHeaderFooter->getRightText());
@@ -81,7 +92,7 @@ void XMLTableMasterPageExport::exportHeaderFooter(const 
css::uno::Reference < cs
     if( !bDisplay )
         GetExport().AddAttribute( XML_NAMESPACE_STYLE,
                                         XML_DISPLAY, XML_FALSE );
-    SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE,
+    SvXMLElementExport aElem( GetExport(), nNameSpace,
                               aName, true, true );
     if (!sCenter.isEmpty() && sLeft.isEmpty() && sRight.isEmpty())
         exportHeaderFooterContent( xCenter, false, false );

Reply via email to