[Libreoffice-commits] core.git: sw/qa writerfilter/source
Miklos Vajna
vmiklos at collabora.co.uk
Thu Jul 31 08:47:05 PDT 2014
sw/qa/extras/ooxmlexport/data/sdt-date-duplicate.docx |binary
sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx | 9 +++++++++
writerfilter/source/dmapper/SdtHelper.cxx | 2 ++
3 files changed, 11 insertions(+)
New commits:
commit 8fea536cebefe319a7fd5971b28e0936ac91ecb9
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Thu Jul 31 17:20:43 2014 +0200
SdtHelper::createDateControl: clear the property list after reading it
Otherwise it may happen that the property list will be read twice, and
on export we'll create two <w:sdt> for a single imported one.
Change-Id: I57ab595f956c5e808fc73fe644ee3e249a1fc1ed
diff --git a/sw/qa/extras/ooxmlexport/data/sdt-date-duplicate.docx b/sw/qa/extras/ooxmlexport/data/sdt-date-duplicate.docx
new file mode 100644
index 0000000..038ab11
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/sdt-date-duplicate.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
index 73fab54..2e5844a 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
@@ -550,6 +550,15 @@ DECLARE_OOXMLEXPORT_TEST(testTableStart2Sdt, "table-start-2-sdt.docx")
}
}
+DECLARE_OOXMLEXPORT_TEST(testSdtDateDuplicate, "sdt-date-duplicate.docx")
+{
+ if (xmlDocPtr pXmlDoc = parseExport())
+ {
+ // Single <w:sdt> was exported as 2 <w:sdt> elements.
+ assertXPath(pXmlDoc, "//w:sdt", 1);
+ }
+}
+
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/SdtHelper.cxx b/writerfilter/source/dmapper/SdtHelper.cxx
index bf268a3..693b248 100644
--- a/writerfilter/source/dmapper/SdtHelper.cxx
+++ b/writerfilter/source/dmapper/SdtHelper.cxx
@@ -131,6 +131,8 @@ void SdtHelper::createDateControl(OUString& rContentText, beans::PropertyValue a
aGrabBag["CharFormat"] <<= aCharFormat.Value;
// merge in properties like ooxml:CT_SdtPr_alias and friends.
aGrabBag.update(comphelper::SequenceAsHashMap(m_aGrabBag));
+ // and empty the property list, so they won't end up on the next sdt as well
+ m_aGrabBag.realloc(0);
std::vector<OUString> aItems;
createControlShape(lcl_getOptimalWidth(m_rDM_Impl.GetStyleSheetTable(), rContentText, aItems), xControlModel, aGrabBag.getAsConstPropertyValueList());
More information about the Libreoffice-commits
mailing list