oox/source/export/vmlexport.cxx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
New commits: commit 7b49bf7f726e03cd8c0e8ed1405f2565114438f0 Author: Noel Grandin <[email protected]> AuthorDate: Mon Jan 12 21:02:56 2026 +0200 Commit: Xisco Fauli <[email protected]> CommitDate: Wed Jan 14 10:59:47 2026 +0100 officeotron says that o:spt needs to be numeric Change-Id: I9d2f995d7cdc2feae547b61e60f75ed608277386 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197137 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins (cherry picked from commit ad70c58224084f8f390cd01713f8fd03962680d0) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197218 Reviewed-by: Xisco Fauli <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197249 diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx index 905e63c47eac..529e6d99e82b 100644 --- a/oox/source/export/vmlexport.cxx +++ b/oox/source/export/vmlexport.cxx @@ -1261,12 +1261,21 @@ sal_uInt32 VMLExport::GenerateShapeId() OString VMLExport::GetVMLShapeTypeDefinition( std::string_view sShapeID, const bool bIsPictureFrame ) { + // officeotron says that o:spt needs to be numeric + sal_Int32 nSptId = 0; + std::string_view sRest; + if (o3tl::starts_with(sShapeID, "ole_rId", &sRest)) + nSptId = o3tl::toInt32(sRest); + else + nSptId = o3tl::toInt32(sShapeID); + SAL_WARN_IF(nSptId == 0, "oox", "o:spt needs to be numeric, but we have " << sShapeID); + assert(nSptId != 0); OString sShapeType; if ( !bIsPictureFrame ) // We don't have a shape definition for host control in presetShapeDefinitions.xml // So use a definition copied from DOCX file created with MSO sShapeType = OString::Concat("<v:shapetype id=\"_x0000_t") + sShapeID + - "\" coordsize=\"21600,21600\" o:spt=\"" + sShapeID + + "\" coordsize=\"21600,21600\" o:spt=\"" + OString::number(nSptId) + "\" path=\"m,l,21600l21600,21600l21600,xe\"> " "<v:stroke joinstyle=\"miter\"/> " "<v:path shadowok=\"f\" o:extrusionok=\"f\" strokeok=\"f\" fillok=\"f\" o:connecttype=\"rect\"/> " @@ -1276,7 +1285,7 @@ OString VMLExport::GetVMLShapeTypeDefinition( // We don't have a shape definition for picture frame in presetShapeDefinitions.xml // So use a definition copied from DOCX file created with MSO sShapeType = OString::Concat("<v:shapetype id=\"_x0000_t") + sShapeID + - "\" coordsize=\"21600,21600\" o:spt=\"" + sShapeID + + "\" coordsize=\"21600,21600\" o:spt=\"" + OString::number(nSptId) + "\" o:preferrelative=\"t\" path=\"m@4@5l@4@11@9@11@9@5xe\" filled=\"f\" stroked=\"f\"> " "<v:stroke joinstyle=\"miter\"/> " "<v:formulas> "
