diff options
-rw-r--r-- | writerfilter/source/dmapper/PropertyMap.cxx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx index 0026ac8fe5ae..c971f229d95e 100644 --- a/writerfilter/source/dmapper/PropertyMap.cxx +++ b/writerfilter/source/dmapper/PropertyMap.cxx @@ -1406,6 +1406,7 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl ) uno::UNO_QUERY_THROW); uno::Reference<container::XEnumeration> const xEnum( xCursor->createEnumeration()); + bool isFound = false; while (xEnum->hasMoreElements()) { uno::Reference<beans::XPropertySet> xElem; @@ -1419,10 +1420,24 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl ) // tdf#112201: do *not* use m_sFirstPageStyleName here! xElem->setPropertyValue(getPropertyName(PROP_PAGE_DESC_NAME), uno::makeAny(m_sFollowPageStyleName)); + isFound = true; break; } } } + if (!isFound) + { // HACK: try the last paragraph of the previous section + uno::Reference<text::XParagraphCursor> const xPCursor(xCursor, uno::UNO_QUERY_THROW); + xPCursor->gotoPreviousParagraph(false); + uno::Reference<beans::XPropertySet> const xPSCursor(xCursor, uno::UNO_QUERY_THROW); + style::BreakType bt; + if ((xPSCursor->getPropertyValue("BreakType") >>= bt) + && bt == style::BreakType_PAGE_BEFORE) + { + xPSCursor->setPropertyValue(getPropertyName(PROP_PAGE_DESC_NAME), + uno::makeAny(m_sFollowPageStyleName)); + } + } } } catch ( const uno::Exception& ) |