diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-10-15 12:53:05 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-10-19 09:33:45 +0000 |
commit | b7cc2a8a22d3723a1efff515eb07669166f158a8 (patch) | |
tree | a648d29ea07aae6196276170df9b0819ebca678a | |
parent | 9a2f97b9539f8101745467758fe03d5e76c0346f (diff) |
fdo#52208 DOCX import: don't always ignore cont sect break at the doc end
Regression from commit 1fdd61db155cf63d5dd55cc2bfb45af33796e131,
continuous section break does make sense at the end of the doc, if the
previous type was a non-continuous.
(cherry picked from commit abd4ffadf30e02284290ea35e8f45d9ffd8eb5ee)
Change-Id: I6d82c67e068d8dc3ce1edb1a5fe6ad293afd805d
Reviewed-on: https://gerrit.libreoffice.org/877
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 12 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyMap.hxx | 1 |
2 files changed, 11 insertions, 2 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 2068b613dac2..3eed3cd043c4 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2372,9 +2372,17 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); if(pSectionContext) { - // Ignore continous section break at the end of the document + // Ignore continous section break at the end of the document, if the previous section had the same type as well // It makes the importer loose margin settings with no benefit - if (m_pImpl->GetParaSectpr() || nIntValue != 0) + SectionPropertyMap* pLastContext = m_pImpl->GetLastSectionContext(); + int nPrevBreakType = 0; + bool bHasPrevSection = false; + if (pLastContext) + { + bHasPrevSection = true; + nPrevBreakType = pLastContext->GetBreakType(); + } + if (m_pImpl->GetParaSectpr() || nIntValue != 0 || (bHasPrevSection && nPrevBreakType != nIntValue)) pSectionContext->SetBreakType( nIntValue ); } break; diff --git a/writerfilter/source/dmapper/PropertyMap.hxx b/writerfilter/source/dmapper/PropertyMap.hxx index b9a3d5d0ebb5..7a3b5bd79045 100644 --- a/writerfilter/source/dmapper/PropertyMap.hxx +++ b/writerfilter/source/dmapper/PropertyMap.hxx @@ -245,6 +245,7 @@ public: void SetPageNoRestart( bool bSet ) { m_bPageNoRestart = bSet; } void SetPageNumber( sal_Int32 nSet ) { m_nPageNumber = nSet; } void SetBreakType( sal_Int32 nSet ) { m_nBreakType = nSet; } + sal_Int32 GetBreakType( ) { return m_nBreakType; } void SetPaperBin( sal_Int32 nSet ); void SetFirstPaperBin( sal_Int32 nSet ); |