diff options
author | László Németh <nemeth@numbertext.org> | 2021-01-22 10:10:39 +0100 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2021-01-25 10:09:33 +0100 |
commit | 6de15a8d094b7eca68eab5341d5a55744154114e (patch) | |
tree | 3c59ddf4b5e620d8658896774e25461794911881 /writerfilter | |
parent | 96673ea050ac3299a543692b7a0d782794e3d2cd (diff) |
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 <nemeth@numbertext.org>
(cherry picked from commit b7ca9576c26ed258537134c0cf2944cfcfc65f2e)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109799
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 3 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 8 |
2 files changed, 6 insertions, 5 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index ec93ba4acdb3..ea64b4aa5f52 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -3512,7 +3512,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 5325190d5ef2..580de1b9730c 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -2076,20 +2076,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; |