dev/null                                             |binary
 sw/qa/core/header_footer/HeaderFooterTest.cxx        |   13 -------------
 sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx |   10 ----------
 sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx |   12 ------------
 sw/source/writerfilter/dmapper/PropertyMap.cxx       |    6 ++----
 5 files changed, 2 insertions(+), 39 deletions(-)

New commits:
commit e7615e464ea6fe7f0a87fb5acd61daf65e7d55a7
Author:     Justin Luth <jl...@mail.com>
AuthorDate: Mon Jul 15 14:33:32 2024 -0400
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Jul 22 20:14:53 2024 +0200

    Revert "tdf#159013 writerfilter: link to the correct first-page header"
    
    This reverts commit 25.2 358ac0da827f908ce312c6d392a3d9102f36428e.
    which was backported to 24.8
    
    Although this patch made the situation "better than it was"
    for most cases, it will inevitably make some documents worse.
    
    Ultimately, this approach is wrong.
    See tdf#158977's 158977_linkNonEmptyFirst.docx.
    
    We can't only copy from the styles that "express" a H/F
    (and UNO doesn't let us copy from styles that hide it).
    
    A COPY appropach would need to ALWAYS import every header/footer
    into a dedicated "header/footer repository" page style,
    and every page style would need to copy its "expressed"
    headers/footers from the repository to its page style.
    
    That would mean our copy procedure would need to be very robust,
    and all of this is way too big for a bug-fixer like me to consider.
    I don't want to be the one on the hook expected to fix it properly.
    
    Change-Id: I2af4a03a219daabf186473839ba444ff9797ec2f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170530
    Tested-by: Jenkins
    Reviewed-by: Justin Luth <jl...@mail.com>
    (cherry picked from commit 671290e8054366997e512572b2e4e38efbf95f80)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170552

diff --git a/sw/qa/core/header_footer/HeaderFooterTest.cxx 
b/sw/qa/core/header_footer/HeaderFooterTest.cxx
index 763012652c7c..acfd77f1270e 100644
--- a/sw/qa/core/header_footer/HeaderFooterTest.cxx
+++ b/sw/qa/core/header_footer/HeaderFooterTest.cxx
@@ -525,19 +525,6 @@ CPPUNIT_TEST_FIXTURE(HeaderFooterTest, 
testTdf145998_firstHeader)
     CPPUNIT_ASSERT_EQUAL(u"Normal Header"_ustr, 
parseDump("/root/page[2]/header/txt"_ostr));
 }
 
-CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testTdf1159013_firstHeaderCopy)
-{
-    // given a document with a first-header-section, a non-first-section, then 
a first-link-section
-    createSwDoc("tdf1159013_firstHeaderCopy.docx");
-    saveAndReload(u"Office Open XML Text"_ustr);
-
-    // Sanity check - always good to test when dealing with page styles and 
breaks.
-    CPPUNIT_ASSERT_EQUAL(5, getPages());
-
-    // This was copying the non-first-section header instead of "linking" to 
the first
-    CPPUNIT_ASSERT_EQUAL(u"First Page header"_ustr, 
parseDump("/root/page[5]/header/txt"_ostr));
-}
-
 CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testEvenPageOddPageFooter_Import)
 {
     // Related tdf#135216
diff --git a/sw/qa/core/header_footer/data/tdf1159013_firstHeaderCopy.docx 
b/sw/qa/core/header_footer/data/tdf1159013_firstHeaderCopy.docx
deleted file mode 100644
index fa2c84cbe4cd..000000000000
Binary files a/sw/qa/core/header_footer/data/tdf1159013_firstHeaderCopy.docx 
and /dev/null differ
diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx 
b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
index c168fcc094b2..e9a8d19d05d7 100644
--- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
+++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
@@ -3980,16 +3980,6 @@ void DomainMapper_Impl::PopPageHeaderFooter(PagePartType 
ePagePartType, PageType
     if (pSectionContext)
     {
         pSectionContext->clearHeaderFooterLinkToPrevious(ePagePartType, eType);
-
-        // remember most recent "first page" header/footer so follow sections 
can "link" to them
-        if (eType == PageType::FIRST)
-        {
-            if (ePagePartType == PagePartType::Header)
-                m_pLastFirstHeader = pSectionContext->GetPageStyle(*this);
-            else if (ePagePartType == PagePartType::Footer)
-                m_pLastFirstFooter = pSectionContext->GetPageStyle(*this);
-        }
-
         m_HeaderFooterSeen.emplace(ePagePartType, eType);
     }
 
diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx 
b/sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx
index 86df252b8ff9..9ab2e6f789f8 100644
--- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx
+++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx
@@ -617,8 +617,6 @@ private:
 
     PropertyMapPtr                  m_pTopContext;
     tools::SvRef<SectionPropertyMap> m_pLastSectionContext;
-    rtl::Reference<SwXPageStyle> m_pLastFirstHeader; // last page style with 
different first header
-    rtl::Reference<SwXPageStyle> m_pLastFirstFooter; // last page style with 
different first footer
     PropertyMapPtr           m_pLastCharacterContext;
 
     ::std::vector<DeletableTabStop> m_aCurrentTabStops;
@@ -718,16 +716,6 @@ public:
         return m_pLastSectionContext.get( );
     }
 
-    const rtl::Reference<SwXPageStyle>& GetLastFirstHeader() const
-    {
-        return m_pLastFirstHeader;
-    }
-
-    const rtl::Reference<SwXPageStyle>& GetLastFirstFooter() const
-    {
-        return m_pLastFirstFooter;
-    }
-
     css::uno::Reference<css::container::XNameContainer> const & 
GetPageStyles();
     OUString GetUnusedPageStyleName();
     css::uno::Reference<css::container::XNameContainer> const & 
GetCharacterStyles();
diff --git a/sw/source/writerfilter/dmapper/PropertyMap.cxx 
b/sw/source/writerfilter/dmapper/PropertyMap.cxx
index 3f75394606d3..b0cefec30ad4 100644
--- a/sw/source/writerfilter/dmapper/PropertyMap.cxx
+++ b/sw/source/writerfilter/dmapper/PropertyMap.cxx
@@ -1052,8 +1052,7 @@ void copyHeaderFooter(const DomainMapper_Impl& rDM_Impl,
         if (bCopyLeftHeader && bEvenAndOdd)
             copyHeaderFooterTextProperty(xPreviousStyle, xStyle, 
PROP_HEADER_TEXT_LEFT);
         if (bCopyFirstHeader && bTitlePage)
-            copyHeaderFooterTextProperty(rDM_Impl.GetLastFirstHeader(), xStyle,
-                                         PROP_HEADER_TEXT_FIRST);
+            copyHeaderFooterTextProperty(xPreviousStyle, xStyle, 
PROP_HEADER_TEXT_FIRST);
     }
 
     if (bPreviousHasFooter && bCopyFooter)
@@ -1063,8 +1062,7 @@ void copyHeaderFooter(const DomainMapper_Impl& rDM_Impl,
         if (bCopyLeftFooter && bEvenAndOdd)
             copyHeaderFooterTextProperty(xPreviousStyle, xStyle, 
PROP_FOOTER_TEXT_LEFT);
         if (bCopyFirstFooter && bTitlePage)
-            copyHeaderFooterTextProperty(rDM_Impl.GetLastFirstFooter(), xStyle,
-                                         PROP_FOOTER_TEXT_FIRST);
+            copyHeaderFooterTextProperty(xPreviousStyle, xStyle, 
PROP_FOOTER_TEXT_FIRST);
     }
 
     xStyle->setPropertyValue(sHeaderIsOn, uno::Any(bPreviousHasHeader || 
bHasHeader));

Reply via email to