From 32102e559eed6eadf2ea146e212a330a3bc897ca Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Thu, 5 Oct 2023 07:24:56 -0400 Subject: [PATCH] tdf#157574 Revert "tdf#153613 tdf#146984 split para after anchors" This reverts 7.6 commit 828fde37632a5bb0542b6925454690a5287d6490. and also reverts the dependent parts of the follow-up test from commit 828fde37632a5bb0542b6925454690a5287d6490 (although the patch itself is fine to remain in place) and also reverts followup "cid#1522030 Uninitialized scalar field" commit 9a123a6e63600ba3998d22bbc300ac4b65b3da2c. The commit in general is fine. However, it fails in case of an empty paragraph (with only anchors). Unfortunately, there is no way of knowing ahead of time, so either everything needs to be processed after a delay, or else the paragraph needs to be split and then re-joined in case it is not an empty paragraph. Both options are extremely non-trivial - I don't know how to do either of them. Change-Id: I9e98d825ad0008e822172b6797116ad16e90b871 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157593 Tested-by: Jenkins Reviewed-by: Justin Luth --- .../data/tdf153613_textboxAfterPgBreak3.docx | Bin 7037 -> 0 bytes sw/qa/extras/ooxmlexport/ooxmlexport18.cxx | 15 --------------- writerfilter/source/dmapper/DomainMapper.cxx | 5 +---- .../source/dmapper/DomainMapper_Impl.cxx | 13 ------------- .../source/dmapper/DomainMapper_Impl.hxx | 3 --- 5 files changed, 1 insertion(+), 35 deletions(-) delete mode 100644 sw/qa/extras/ooxmlexport/data/tdf153613_textboxAfterPgBreak3.docx diff --git a/sw/qa/extras/ooxmlexport/data/tdf153613_textboxAfterPgBreak3.docx b/sw/qa/extras/ooxmlexport/data/tdf153613_textboxAfterPgBreak3.docx deleted file mode 100644 index a282deaa0ad71bbe8b82cf6c65fcd7b5cd288368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7037 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 GzxzL0c~!0e diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx index 066eb3647cb5..bbcc40dde073 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx @@ -193,11 +193,6 @@ DECLARE_OOXMLEXPORT_TEST(testTdf146984_anchorInShape, "tdf146984_anchorInShape.d { // This was only one page b/c the page break was missing. CPPUNIT_ASSERT_EQUAL(2, getPages()); - - const auto& pLayout = parseLayoutDump(); - // There are shapes on both pages - these should be non-zero numbers - assertXPath(pLayout, "//page[1]//anchored", 3); - assertXPath(pLayout, "//page[2]//anchored", 2); } DECLARE_OOXMLEXPORT_TEST(testTdf127622_framePr, "tdf127622_framePr.docx") @@ -379,16 +374,6 @@ DECLARE_OOXMLEXPORT_TEST(testTdf153613_textboxAfterPgBreak2, "tdf153613_textboxA assertXPathContent(pLayout, "//page[2]/body/txt", "There should be no prior carriage return."); } -DECLARE_OOXMLEXPORT_TEST(testTdf153613_textboxAfterPgBreak3, "tdf153613_textboxAfterPgBreak3.docx") -{ - // All anchored TO-character shapes stay on the first page, before the page break. - CPPUNIT_ASSERT_EQUAL(2, getPages()); - CPPUNIT_ASSERT_EQUAL(3, getParagraphs()); - - const auto& pLayout = parseLayoutDump(); - assertXPath(pLayout, "//page[2]//anchored", 0); -} - DECLARE_OOXMLEXPORT_TEST(testTdf153613_sdtAfterPgBreak, "tdf153613_sdtAfterPgBreak.docx") { CPPUNIT_ASSERT_EQUAL(2, getPages()); diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 5b5647be8bae..726730ad3076 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -3741,7 +3741,7 @@ void DomainMapper::lcl_startShape(uno::Reference const& xShape) { // If there is a deferred page break, handle it now, so that the // started shape will be on the correct page. - if (m_pImpl->isBreakDeferred(PAGE_BREAK) && !m_pImpl->IsBreakDeferredByAnchor()) + if (m_pImpl->isBreakDeferred(PAGE_BREAK)) { // RTF doesn't properly report IsFirstRun, so in order to prevent regressions // always split the paragraph for RTF since that is the way it has been done lately. @@ -3751,9 +3751,6 @@ void DomainMapper::lcl_startShape(uno::Reference const& xShape) finishParagraph(); lcl_startParagraphGroup(); } - else - m_pImpl->SetIsBreakDeferredByAnchor(); - } m_pImpl->PushShapeContext( xShape ); lcl_startParagraphGroup(); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 36a0f6c178f9..4d91790ade4c 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -334,7 +334,6 @@ DomainMapper_Impl::DomainMapper_Impl( m_bIsColumnBreakDeferred( false ), m_bIsPageBreakDeferred( false ), m_nLineBreaksDeferred( 0 ), - m_bIsBreakDeferredByAnchor(false), m_bSdtEndDeferred(false), m_bParaSdtEndDeferred(false), m_bStartTOC(false), @@ -1592,7 +1591,6 @@ void DomainMapper_Impl::clearDeferredBreak(BreakType deferredBreakType) break; case PAGE_BREAK: m_bIsPageBreakDeferred = false; - m_bIsBreakDeferredByAnchor = false; break; default: break; @@ -1604,17 +1602,6 @@ void DomainMapper_Impl::clearDeferredBreaks() m_nLineBreaksDeferred = 0; m_bIsColumnBreakDeferred = false; m_bIsPageBreakDeferred = false; - m_bIsBreakDeferredByAnchor = false; -} - -bool DomainMapper_Impl::IsBreakDeferredByAnchor() -{ - return m_bIsBreakDeferredByAnchor; -} - -void DomainMapper_Impl::SetIsBreakDeferredByAnchor() -{ - m_bIsBreakDeferredByAnchor = true; } void DomainMapper_Impl::setSdtEndDeferred(bool bSdtEndDeferred) diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 676a0d3196d9..82d7ca06824e 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -472,7 +472,6 @@ private: bool m_bIsColumnBreakDeferred; bool m_bIsPageBreakDeferred; sal_Int32 m_nLineBreaksDeferred; - bool m_bIsBreakDeferredByAnchor; /// If we want to set "sdt end" on the next character context. bool m_bSdtEndDeferred; /// If we want to set "paragraph sdt end" on the next paragraph context. @@ -743,8 +742,6 @@ public: bool isBreakDeferred( BreakType deferredBreakType ); void clearDeferredBreaks(); void clearDeferredBreak(BreakType deferredBreakType); - bool IsBreakDeferredByAnchor(); - void SetIsBreakDeferredByAnchor(); void setSdtEndDeferred(bool bSdtEndDeferred); bool isSdtEndDeferred() const;