[Libreoffice-commits] core.git: sw/qa writerfilter/source
Justin Luth (via logerrit)
logerrit at kemper.freedesktop.org
Wed Sep 9 13:56:55 UTC 2020
sw/qa/extras/ooxmlexport/data/tdf136589_paraHadField.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport15.cxx | 6 ++++++
writerfilter/source/dmapper/DomainMapper_Impl.cxx | 4 ++++
writerfilter/source/dmapper/DomainMapper_Impl.hxx | 1 +
4 files changed, 11 insertions(+)
New commits:
commit a0d2e45f2efbe4e82b78c777d21b5eabec3a0924
Author: Justin Luth <justin.luth at collabora.com>
AuthorDate: Wed Sep 9 11:08:32 2020 +0300
Commit: Justin Luth <justin_luth at sil.org>
CommitDate: Wed Sep 9 15:56:08 2020 +0200
tdf#136589 writerfilter: reset ParaHadField
::finishParagraph normally resets this, but it exited
early because of m_bDiscardHeaderFooter, so the setting
spilled over into the following paragraph.
This is a bit of a bandaid - likely stacks of paragraphs
and sections need to be used so each can hold its
own settings and not worry about them being clobbered.
But this particular case seems to a single level problem,
isolated to headers/footers, so the change should
both be enough and regression-safe.
Change-Id: I84c9a5d6bf95c35c4996a9b31e53f18c05ade727
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102314
Tested-by: Justin Luth <justin_luth at sil.org>
Reviewed-by: Justin Luth <justin_luth at sil.org>
diff --git a/sw/qa/extras/ooxmlexport/data/tdf136589_paraHadField.docx b/sw/qa/extras/ooxmlexport/data/tdf136589_paraHadField.docx
new file mode 100644
index 000000000000..c4cf7a139a03
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf136589_paraHadField.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
index 999ef57a38af..b3c3d79962a0 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
@@ -299,6 +299,12 @@ DECLARE_OOXMLEXPORT_TEST(testTdf135216_evenOddFooter, "tdf135216_evenOddFooter.o
getParagraph(2, "2");
}
+DECLARE_OOXMLEXPORT_TEST(testTdf136589_paraHadField, "tdf136589_paraHadField.docx")
+{
+ // The section break should not add an additional CR - which equals an empty page two.
+ CPPUNIT_ASSERT_EQUAL(2, getPages());
+}
+
DECLARE_OOXMLEXPORT_TEST(testTdf133370_columnBreak, "tdf133370_columnBreak.odt")
{
// Since non-DOCX formats ignores column breaks in non-column situations, don't export to docx.
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index e7b571de687b..e7ecfffd4338 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -313,6 +313,7 @@ DomainMapper_Impl::DomainMapper_Impl(
m_bIsActualParagraphFramed( false ),
m_vTextFramesForChaining(),
m_bParaHadField(false),
+ m_bSaveParaHadField(false),
m_bParaAutoBefore(false),
m_bFirstParagraphInCell(true),
m_bSaveFirstParagraphInCell(false),
@@ -2438,6 +2439,7 @@ void DomainMapper_Impl::appendGlossaryEntry()
void DomainMapper_Impl::PushPageHeaderFooter(bool bHeader, SectionPropertyMap::PageType eType)
{
+ m_bSaveParaHadField = m_bParaHadField;
m_aHeaderFooterStack.push(HeaderFooterContext(m_bTextInserted, m_nTableDepth));
m_bTextInserted = false;
m_nTableDepth = 0;
@@ -2538,6 +2540,8 @@ void DomainMapper_Impl::PopPageHeaderFooter()
m_nTableDepth = m_aHeaderFooterStack.top().getTableDepth();
m_aHeaderFooterStack.pop();
}
+
+ m_bParaHadField = m_bSaveParaHadField;
}
void DomainMapper_Impl::PushFootOrEndnote( bool bIsFootnote )
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 33ec662c5feb..1a9f9340bac6 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -1074,6 +1074,7 @@ private:
std::vector<css::uno::Reference< css::drawing::XShape > > m_vTextFramesForChaining ;
/// Current paragraph had at least one field in it.
bool m_bParaHadField;
+ bool m_bSaveParaHadField;
css::uno::Reference<css::beans::XPropertySet> m_xPreviousParagraph;
/// Current paragraph has automatic before spacing.
bool m_bParaAutoBefore;
More information about the Libreoffice-commits
mailing list