sw/qa/extras/ooxmlexport/data/tdf138899.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport12.cxx | 7 +++++++ writerfilter/source/dmapper/DomainMapper.cxx | 3 ++- writerfilter/source/dmapper/DomainMapper_Impl.cxx | 8 ++++---- 4 files changed, 13 insertions(+), 5 deletions(-)
New commits: commit b7ca9576c26ed258537134c0cf2944cfcfc65f2e Author: László Németh <nem...@numbertext.org> AuthorDate: Fri Jan 22 10:10:39 2021 +0100 Commit: László Németh <nem...@numbertext.org> CommitDate: Fri Jan 22 15:06:53 2021 +0100 tdf#138899 DOCX import: fix removing last para of section Fix regression from commit 39090afac268f9ae985832c2f08863b41e6c06f2 (tdf#120336 DOCX import: fix page break after tracked deletion), limiting the condition only for *empty* section starting paragraphs with tracked deletion. Change-Id: I020c8b0edf5d4a37a9150cccec8c25fce50327d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109779 Tested-by: Jenkins Reviewed-by: László Németh <nem...@numbertext.org> diff --git a/sw/qa/extras/ooxmlexport/data/tdf138899.docx b/sw/qa/extras/ooxmlexport/data/tdf138899.docx new file mode 100644 index 000000000000..3e346ac0e4d9 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf138899.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx index 0cfcb0c7a89f..b9cf6209afe6 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx @@ -937,6 +937,13 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf99631, "tdf99631.docx") assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[2]/w:object[1]", "dyaOrig", "768"); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf138899, "tdf138899.docx") +{ + xmlDocUniquePtr pXmlDocument = parseExport("word/document.xml"); + // This was 6, not removed empty temporary paragraph at the end of the section + assertXPath(pXmlDocument, "/w:document/w:body/w:p", 5); +} + DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf122563, "tdf122563.docx") { xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 74502be05b3f..9604361fc110 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -3520,7 +3520,8 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len) if (bNewLine) { const bool bSingleParagraph = m_pImpl->GetIsFirstParagraphInSection() && m_pImpl->GetIsLastParagraphInSection(); - const bool bSingleParagraphAfterRedline = m_pImpl->GetIsFirstParagraphInSection(true) && m_pImpl->GetIsLastParagraphInSection(); + const bool bSingleParagraphAfterRedline = m_pImpl->GetIsFirstParagraphInSection(/*bAfterRedline=*/true) && + m_pImpl->GetIsLastParagraphInSection(); PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH); if (!m_pImpl->GetFootnoteContext()) { diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index c0aff5d713a3..a7d488b47a89 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -2077,20 +2077,20 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con else SetIsPreviousParagraphFramed(false); - m_bParaChanged = false; m_bRemoveThisParagraph = false; if( !IsInHeaderFooter() && !IsInShape() && (!pParaContext || !pParaContext->IsFrameMode()) ) { // If the paragraph is in a frame, shape or header/footer, it's not a paragraph of the section itself. SetIsFirstParagraphInSection(false); - // count first not deleted paragraph as first paragraph in section to avoid of - // its deletion later, resulting loss of the associated page break - if (!m_previousRedline) + // don't count an empty deleted paragraph as first paragraph in section to avoid of + // the deletion of the next empty paragraph later, resulting loss of the associated page break + if (!m_previousRedline || m_bParaChanged) { SetIsFirstParagraphInSectionAfterRedline(false); SetIsLastParagraphInSection(false); } } m_previousRedline.clear(); + m_bParaChanged = false; if (m_bIsFirstParaInShape) m_bIsFirstParaInShape = false; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits