summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--writerfilter/source/dmapper/PropertyMap.cxx15
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& )