summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf104354_firstParaInSection.docxbin0 -> 6828 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport11.cxx10
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx5
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
new file mode 100644
index 000000000000..79ff44f256f8
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf104354_firstParaInSection.docx
Binary files differ
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)