summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLászló Németh <nemeth@numbertext.org>2019-09-12 15:48:35 +0200
committerLászló Németh <nemeth@numbertext.org>2019-09-13 07:59:53 +0200
commitc5d37d324cd6d17114c209de1862344ad58a1d93 (patch)
tree181eed9ab48d27b9bfca72840bd3fe0204b3c1a2
parent0701a1838280d4fa9c54ca39f1a5297fe4857a16 (diff)
tdf#117274 XLSX export: fix VML comment shape type id
to avoid shape multiplication in a mixed environment. MSO needs the special unescaped VML comment shape type id "_x0000_t202" to avoid of generating also DrawingML shapes from the VML ones. Calc export escaped the shape type ids ("_x005F_x0000_t202"), keeping also the DrawingML shapes, so every round trip between LO and MSO resulted more and more broken shapes in the document. See also commit ea7274259a211170ee9f5a8714a2f9acd8bed6d8 "tdf#114842 Fix comment shape export for Calc". Change-Id: I55b29146ebcdc20cf4f53464bf318fb34bfc5934 Reviewed-on: https://gerrit.libreoffice.org/78831 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
-rw-r--r--oox/source/export/preset-definitions-to-shape-types.pl2
-rw-r--r--sax/source/tools/fastserializer.cxx4
-rw-r--r--sc/qa/unit/subsequent_export-test.cxx4
3 files changed, 8 insertions, 2 deletions
diff --git a/oox/source/export/preset-definitions-to-shape-types.pl b/oox/source/export/preset-definitions-to-shape-types.pl
index 16bf1cf6c61f..f6bd260f7cde 100644
--- a/oox/source/export/preset-definitions-to-shape-types.pl
+++ b/oox/source/export/preset-definitions-to-shape-types.pl
@@ -1189,7 +1189,7 @@ close( $file );
if ( !defined( $result_shapes{'textBox'} ) ) {
# tdf#114842 shapetype id of the textbox, must be the same as defined
$result_shapes{'textBox'} =
- "<v:shapetype id=\"_x005F_x0000_t__ID__\" coordsize=\"21600,21600\" " .
+ "<v:shapetype id=\"_x0000_t__ID__\" coordsize=\"21600,21600\" " .
"o:spt=\"__ID__\" path=\"m,l,21600l21600,21600l21600,xe\">\n" .
"<v:stroke joinstyle=\"miter\"/>\n" .
"<v:path gradientshapeok=\"t\" o:connecttype=\"rect\"/>\n" .
diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx
index d862c163fb38..2741bb4d4a28 100644
--- a/sax/source/tools/fastserializer.cxx
+++ b/sax/source/tools/fastserializer.cxx
@@ -130,7 +130,9 @@ namespace sax_fastparser {
if (nLen == -1)
nLen = pStr ? strlen(pStr) : 0;
- if (!bEscape)
+ if ( !bEscape ||
+ // tdf#127274 don't escape the special VML shape type id "#_x0000_t202"
+ (pStr && strcmp(pStr, "#_x0000_t202") == 0) )
{
writeBytes( pStr, nLen );
return;
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index d406100866ef..d4cee605170d 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -787,6 +787,10 @@ void ScExportTest::testCommentExportXLSX()
assertXPath(pVmlDrawing, "/xml/v:shape", "type", sShapeTypeId);
assertXPath(pVmlDrawing, "/xml/v:shape/v:shadow", "color", "black");
assertXPath(pVmlDrawing, "/xml/v:shape/v:shadow", "obscured", "t");
+
+ //tdf#117274 fix MSO interoperability with the secret VML shape type id
+ assertXPath(pVmlDrawing, "/xml/v:shapetype", "id", "_x0000_t202");
+ assertXPath(pVmlDrawing, "/xml/v:shape", "type", "#_x0000_t202");
}
void ScExportTest::testCommentExportXLSX_2_XLSX()