diff options
Diffstat (limited to 'writerfilter/source/dmapper')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 12 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 19 |
2 files changed, 24 insertions, 7 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index dbb16d0b8427..c7625e35033b 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -3643,6 +3643,18 @@ void DomainMapper::lcl_endSectionGroup() { m_pImpl->CheckUnregisteredFrameConversion(); m_pImpl->ExecuteFrameConversion(); + if(m_pImpl->GetIsFirstParagraphInSection()) + { + // This section has no paragraph at all (e.g. they are all actually in a frame). + // If this section has a page break, there would be nothing to apply to the page + // style, so force a dummy paragraph. + lcl_startParagraphGroup(); + lcl_startCharacterGroup(); + sal_uInt8 sBreak[] = { 0xd }; + lcl_text(sBreak, 1); + lcl_endCharacterGroup(); + lcl_endParagraphGroup(); + } PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_SECTION); SectionPropertyMap* pSectionContext = dynamic_cast< SectionPropertyMap* >( pContext.get() ); OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 7fe53ae8c9a9..65916731df98 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1140,12 +1140,6 @@ void DomainMapper_Impl::finishParagraph( PropertyMapPtr pPropertyMap ) uno::Reference< text::XTextRange > xParaEnd( xCur, uno::UNO_QUERY ); CheckParaRedline( xParaEnd ); - m_bIsFirstParaInSection = false; - m_bIsLastParaInSection = false; - m_bParaChanged = false; - - // Reset the frame properties for the next paragraph - pParaContext->ResetFrameProperties(); } if( !bKeepLastParagraphProperties ) rAppendContext.pLastParagraphProperties = pToBeSavedProperties; @@ -1154,11 +1148,22 @@ void DomainMapper_Impl::finishParagraph( PropertyMapPtr pPropertyMap ) { OSL_FAIL( "IllegalArgumentException in DomainMapper_Impl::finishParagraph" ); } - catch(const uno::Exception&) + catch(const uno::Exception& e) { + SAL_WARN( "writerfilter", "finishParagraph() exception: " << e.Message ); } } + m_bParaChanged = false; + if(!pParaContext->IsFrameMode()) + { // If the paragraph is in a frame, it's not a paragraph of the section itself. + m_bIsFirstParaInSection = false; + m_bIsLastParaInSection = false; + } + + // Reset the frame properties for the next paragraph + pParaContext->ResetFrameProperties(); + #ifdef DEBUG_DOMAINMAPPER dmapper_logger->endElement(); #endif |