diff options
-rw-r--r-- | sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx index 0f864625dc75..6d6d54d7ac4a 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx +++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx @@ -3775,14 +3775,26 @@ void DomainMapper_Impl::ConvertHeaderFooterToTextFrame(bool bDynamicHeightTop, b namespace { // Determines if the XText content is empty (no text, no shapes, no tables) -bool isContentEmpty(uno::Reference<text::XText> const& xText) +bool isContentEmpty(uno::Reference<text::XText> const& xText, uno::Reference<text::XTextDocument> const& xTextDocument) { if (!xText.is()) return true; // no XText means it's empty - uno::Reference<css::lang::XServiceInfo> xTextServiceInfo(xText, uno::UNO_QUERY); - if (xTextServiceInfo && xTextServiceInfo->getImplementationName() == "SwXHeadFootText") - return false; + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xTextDocument, uno::UNO_QUERY); + auto xDrawPage = xDrawPageSupplier->getDrawPage(); + if (xDrawPage && xDrawPage->hasElements()) + { + for (sal_Int32 i = 0; i < xDrawPage->getCount(); ++i) + { + uno::Reference<text::XTextContent> xShape(xDrawPage->getByIndex(i), uno::UNO_QUERY); + if (xShape.is()) + { + uno::Reference<text::XTextRange> xAnchor = xShape->getAnchor(); + if (xAnchor.is() && xAnchor->getText() == xText) + return false; + } + } + } uno::Reference<container::XEnumerationAccess> xEnumAccess(xText->getText(), uno::UNO_QUERY); uno::Reference<container::XEnumeration> xEnum = xEnumAccess->createEnumeration(); @@ -3941,7 +3953,7 @@ void DomainMapper_Impl::checkIfHeaderFooterIsEmpty(PagePartType ePagePartType, P if (!xPageStyle.is()) return; - bool bEmpty = isContentEmpty(m_aTextAppendStack.top().xTextAppend); + bool bEmpty = isContentEmpty(m_aTextAppendStack.top().xTextAppend, GetTextDocument()); if (eType == PageType::FIRST && bEmpty) { |