Kaydet (Commit) 57def64b authored tarafından Michael Stahl's avatar Michael Stahl

writerfilter: tdf#97417: don't insert numbering on end-of-section

... paragraph, it will be copied to every following paragraph.

(Before commit 2b78f2cd the properties
of the end-of-section paragraph would be overwritten by the properties
inside the header)

Change-Id: Ibe095cf873a09ef9e12f898d09b5fd6f61c914c9
üst 61e80cd9
......@@ -3001,6 +3001,18 @@ DECLARE_OOXMLIMPORT_TEST(testTdf60351, "tdf60351.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aPolygon[5].Y);
}
DECLARE_OOXMLIMPORT_TEST(testTdf97417, "section_break_numbering.docx")
{
// paragraph with numbering and section break was removed by writerfilter
// but its numbering was copied to all following paragraphs
CPPUNIT_ASSERT_MESSAGE("first paragraph missing numbering",
getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), "NumberingRules").is());
uno::Reference<beans::XPropertySet> const xProps(getParagraph(2), uno::UNO_QUERY_THROW);
CPPUNIT_ASSERT_MESSAGE("second paragraph erroneous numbering",
!xProps->getPropertyValue("NumberingRules").hasValue());
}
DECLARE_OOXMLIMPORT_TEST(testTdf95970, "tdf95970.docx")
{
// First shape: the rotation should be -12.94 deg, it should be mirrored.
......
......@@ -3194,10 +3194,19 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
bool bSingleParagraph = m_pImpl->GetIsFirstParagraphInSection() && m_pImpl->GetIsLastParagraphInSection();
// If the paragraph contains only the section properties and it has
// no runs, we should not create a paragraph for it in Writer, unless that would remove the whole section.
bool bRemove = !m_pImpl->GetParaChanged() && m_pImpl->GetParaSectpr() && !bSingleParagraph;
bool bRemove = !m_pImpl->GetParaChanged() && m_pImpl->GetParaSectpr() && !bSingleParagraph && !m_pImpl->GetIsDummyParaAddedForTableInSection();
if (bRemove)
{
// tdf#97417 delete numbering of the paragraph
// it will be deleted anyway, and the numbering would be copied
// to the next paragraph in sw SplitNode and then be applied to
// every following paragraph
m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH)->Erase(PROP_NUMBERING_RULES);
m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH)->Erase(PROP_NUMBERING_LEVEL);
}
m_pImpl->SetParaSectpr(false);
m_pImpl->finishParagraph(m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH));
if (bRemove && !m_pImpl->GetIsDummyParaAddedForTableInSection())
if (bRemove)
m_pImpl->RemoveLastParagraph();
}
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment