From 589e523dd967e39f4715cfe120e12fba11cf9c90 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Fri, 7 Feb 2025 02:27:57 +0100 Subject: [PATCH] tdf#164775 PPTX export: fix connector shape regression A connector shape can be connected to a shape, if the end of connector shape is released inside the target shape, it will automatically attach to the best possible connection point. It takes into account the shape type, geometric properties, and user-defined glue points. In this case, if we export the ODP file to PPTX, we need to use the GetConnectorRule() method to get the correct connection index(idx). this regression is caused by commit 4d153517183193f468dee9148c94fe9d874bacb3 (tdf#149697 PPTX export: fix changing place of connection points). Change-Id: I8eda059e72f595edc62fd5bc7f3e6466988af5bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181226 Tested-by: Jenkins Reviewed-by: Nagy Tibor --- include/filter/msfilter/escherex.hxx | 2 +- oox/source/export/shapes.cxx | 28 +++++++++++++++++---------- sd/qa/unit/data/odp/tdf164775.odp | Bin 0 -> 12630 bytes sd/qa/unit/export-tests-ooxml3.cxx | 12 ++++++++++++ 4 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 sd/qa/unit/data/odp/tdf164775.odp diff --git a/include/filter/msfilter/escherex.hxx b/include/filter/msfilter/escherex.hxx index 91606bca13a2..d6c1b620f077 100644 --- a/include/filter/msfilter/escherex.hxx +++ b/include/filter/msfilter/escherex.hxx @@ -452,7 +452,7 @@ namespace com::sun::star { } } -struct UNLESS_MERGELIBS(MSFILTER_DLLPUBLIC) EscherConnectorListEntry +struct MSFILTER_DLLPUBLIC EscherConnectorListEntry { css::uno::Reference< css::drawing::XShape > mXConnector; css::awt::Point maPointA; diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 0bb8d1ebeecc..40bed3208567 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -1893,16 +1893,6 @@ ShapeExport& ShapeExport::WriteConnectorShape( const Reference< XShape >& xShape if (GetProperty(rXPropSet, u"EdgeEndConnection"_ustr)) mAny >>= rXShapeB; - if (GetProperty(rXPropSet, u"StartGluePointIndex"_ustr)) - mAny >>= nStartGlueId; - if (nStartGlueId != -1) - nStartGlueId = lcl_GetGluePointId(rXShapeA, nStartGlueId); - - if (GetProperty(rXPropSet, u"EndGluePointIndex"_ustr)) - mAny >>= nEndGlueId; - if (nEndGlueId != -1) - nEndGlueId = lcl_GetGluePointId(rXShapeB, nEndGlueId); - // Position is relative to group in Word, but relative to anchor of group in API. if (GetDocumentType() == DOCUMENT_DOCX && !mbUserShapes && m_xParent.is()) { @@ -1914,6 +1904,24 @@ ShapeExport& ShapeExport::WriteConnectorShape( const Reference< XShape >& xShape } EscherConnectorListEntry aConnectorEntry( xShape, aStartPoint, rXShapeA, aEndPoint, rXShapeB ); + if (GetProperty(rXPropSet, u"StartGluePointIndex"_ustr)) + { + mAny >>= nStartGlueId; + nStartGlueId = (nStartGlueId != -1) ? lcl_GetGluePointId(rXShapeA, nStartGlueId) + : (aConnectorEntry.mXConnectToA.is() + ? aConnectorEntry.GetConnectorRule(true) + : -1); + } + + if (GetProperty(rXPropSet, u"EndGluePointIndex"_ustr)) + { + mAny >>= nEndGlueId; + nEndGlueId = (nEndGlueId != -1) ? lcl_GetGluePointId(rXShapeB, nEndGlueId) + : (aConnectorEntry.mXConnectToB.is() + ? aConnectorEntry.GetConnectorRule(false) + : -1); + } + if (eConnectorType != ConnectorType_LINE) { tools::PolyPolygon aPolyPolygon = EscherPropertyContainer::GetPolyPolygon(xShape); diff --git a/sd/qa/unit/data/odp/tdf164775.odp b/sd/qa/unit/data/odp/tdf164775.odp new file mode 100644 index 0000000000000000000000000000000000000000..69b163333e3ed580370e9124cdf8b168e68a414d GIT binary patch literal 12630 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 GQ~wVZ%`@2m literal 0 HcmV?d00001 diff --git a/sd/qa/unit/export-tests-ooxml3.cxx b/sd/qa/unit/export-tests-ooxml3.cxx index c3ea2f874633..9e0b36b9096d 100644 --- a/sd/qa/unit/export-tests-ooxml3.cxx +++ b/sd/qa/unit/export-tests-ooxml3.cxx @@ -27,6 +27,18 @@ public: int testTdf115005_FallBack_Images(bool bAddReplacementImages); }; +CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testTdf164775_ConnectorShape) +{ + createSdImpressDoc("odp/tdf164775.odp"); + save(u"Impress Office Open XML"_ustr); + + xmlDocUniquePtr pXmlDoc1 = parseExport(u"ppt/slides/slide1.xml"_ustr); + assertXPath(pXmlDoc1, "/p:sld/p:cSld/p:spTree/p:cxnSp/p:nvCxnSpPr/p:cNvCxnSpPr/a:stCxn", "idx", + u"3"); + assertXPath(pXmlDoc1, "/p:sld/p:cSld/p:spTree/p:cxnSp/p:nvCxnSpPr/p:cNvCxnSpPr/a:endCxn", "idx", + u"1"); +} + CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testTdf153105) { createSdImpressDoc("odp/tdf153105.odp");