diff options
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf104354_firstParaInSection.docx | bin | 0 -> 6828 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport11.cxx | 10 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 6 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 5 |
4 files changed, 16 insertions, 5 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf104354_firstParaInSection.docx b/sw/qa/extras/ooxmlexport/data/tdf104354_firstParaInSection.docx Binary files differnew file mode 100644 index 000000000000..79ff44f256f8 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf104354_firstParaInSection.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx index 6012d8039e91..e5ef60d164b6 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx @@ -390,6 +390,16 @@ DECLARE_OOXMLEXPORT_TEST(testTdf104354, "tdf104354.docx") getProperty<sal_Int32>(xShape->getEnd(), "ParaTopMargin")); } +DECLARE_OOXMLEXPORT_TEST(testTdf104354_firstParaInSection, "tdf104354_firstParaInSection.docx") +{ + uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY); + uno::Reference<text::XText> xText(xFootnotes->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(494), + getProperty<sal_Int32>(getParagraphOfText(1, xText), "ParaTopMargin")); + CPPUNIT_ASSERT_EQUAL(1, getPages()); +} + DECLARE_OOXMLEXPORT_TEST(testTdf107035, "tdf107035.docx") { // Select the second run containing the page number field diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index a85590baf5e7..d88a4f701ac6 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2855,10 +2855,8 @@ void DomainMapper::lcl_endSectionGroup() { m_pImpl->CheckUnregisteredFrameConversion(); m_pImpl->ExecuteFrameConversion(); - // First paragraph in a footnote doesn't count: that would create - // additional paragraphs before and after the real footnote content. - // Also, when pasting, it's fine to not have any paragraph inside the document at all. - if (m_pImpl->GetIsFirstParagraphInSection() && !m_pImpl->IsInFootOrEndnote() && m_pImpl->IsNewDoc()) + // When pasting, it's fine to not have any paragraph inside the document at all. + if (m_pImpl->GetIsFirstParagraphInSection() && m_pImpl->IsNewDoc()) { // 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 diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 12bd911f5e59..9caf6e3c8fd8 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -480,7 +480,10 @@ bool DomainMapper_Impl::GetIsFirstParagraphInSection() { // Anchored objects may include multiple paragraphs, // and none of them should be considered the first para in section. - return m_bIsFirstParaInSection && !IsInShape(); + return m_bIsFirstParaInSection + && !IsInShape() + && !m_bIsInComments + && !m_bInFootOrEndnote; } void DomainMapper_Impl::SetIsFirstParagraphInShape(bool bIsFirst) |