summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs <szabolcs450@gmail.com>2020-03-30 17:12:05 +0200
committerLászló Németh <nemeth@numbertext.org>2020-04-20 11:12:59 +0200
commit68531e459e7a922319e6bfe8b7a5282ba0320182 (patch)
treedc8d822bcf89e71bd96221653a1d6549f46bc954
parent9283cd9e13cd3e0dd7d6b831d930128931862a40 (diff)
tdf#123346 DOCX VML shape export: fix arrow marker
In some cases at import there are extra space separated numbers at the end of the names of arrow objects. Remove these extra numbers before they could interfere with the choice of markers. See commit 2d3b7a07c02c90d2d64a630ab84886ef3096edfc (tdf#100491 fix DOCX import shape line with arrow marker). Co_Author: Balázs Regényi Change-Id: I2156502b0ce5cd755a731359398a40edabb603a6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91375 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
-rw-r--r--filter/source/msfilter/escherex.cxx5
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf123346_ArrowMarker.docxbin0 -> 12804 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport3.cxx12
3 files changed, 17 insertions, 0 deletions
diff --git a/filter/source/msfilter/escherex.cxx b/filter/source/msfilter/escherex.cxx
index 2abe567fdbeb..443d533ecadb 100644
--- a/filter/source/msfilter/escherex.cxx
+++ b/filter/source/msfilter/escherex.cxx
@@ -887,6 +887,11 @@ bool EscherPropertyContainer::GetLineArrow( const bool bLineStart,
OUString aArrowStartName = *o3tl::doAccess<OUString>(aAny);
sal_uInt16 nWhich = bLineStart ? sal_uInt16(XATTR_LINESTART) : sal_uInt16(XATTR_LINEEND);
+ // remove extra space separated number
+ sal_Int32 nPos = aArrowStartName.lastIndexOf(' ');
+ if (nPos > -1 && aArrowStartName.lastIndexOf(' ', nPos) > -1)
+ aArrowStartName = aArrowStartName.copy(0, nPos);
+
OUString aApiName = SvxUnogetApiNameForItem(nWhich, aArrowStartName);
bool bIsMapped = true;
if ( !aApiName.isEmpty() )
diff --git a/sw/qa/extras/ooxmlexport/data/tdf123346_ArrowMarker.docx b/sw/qa/extras/ooxmlexport/data/tdf123346_ArrowMarker.docx
new file mode 100644
index 000000000000..770bab263d7b
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf123346_ArrowMarker.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
index fbd0552b479d..447bbb1236e8 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
@@ -1123,6 +1123,18 @@ DECLARE_OOXMLEXPORT_TEST(testArrowPosition, "tdf104565_ArrowPosition.docx")
"/wp:positionV/wp:posOffset", "516255");
}
+DECLARE_OOXMLEXPORT_TEST(testArrowMarker, "tdf123346_ArrowMarker.docx")
+{
+ // tdf#123346: Check arrow marker.
+
+ xmlDocPtr pXmlDocument = parseExport("word/document.xml");
+ if (!pXmlDocument)
+ return;
+
+ assertXPath(pXmlDocument, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:anchor"
+ "/a:graphic/a:graphicData/wps:wsp/wps:spPr/a:ln/a:tailEnd", "type", "arrow");
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */