sd/qa/unit/data/odp/tdf169675_3d_object_anim.odp |binary sd/qa/unit/export-tests-ooxml4.cxx | 18 ++++++++++++++++++ sd/source/filter/eppt/pptx-animations-nodectx.cxx | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-)
New commits: commit 8af6771f8ec56185e15762ad1aac11177e8e3404 Author: Aron Budea <[email protected]> AuthorDate: Wed Nov 26 17:19:20 2025 +1030 Commit: Xisco Fauli <[email protected]> CommitDate: Wed Nov 26 15:34:58 2025 +0100 tdf#169675 sd: animation on 3D object results in invalid PPTX 3D objects are only supported in ODP, and don't get exported to PPTX. Animations on them did get exported, resulting in invalid 'spid' (-1) and invalid OOXML. Reuse ShapeExport::IsShapeTypeKnown(...) introduced in ab45b8d9959f8f392a10d0874c50f26b816a4da8. Note the extra entries in PowerPointShapeExport::WriteUnknownShape(...), these are already covered by the second half of isValidTarget(...). Change-Id: Ieb1dc1475b036fe4f24d84cee17b9af544c5bb18 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194543 Reviewed-by: Mike Kaganski <[email protected]> Code-Style: Aron Budea <[email protected]> Tested-by: Jenkins (cherry picked from commit 2f32f2a9a84ff0d66b5dd608fb20fdeb7b7f99a3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194638 Reviewed-by: Xisco Fauli <[email protected]> Code-Style: Xisco Fauli <[email protected]> diff --git a/sd/qa/unit/data/odp/tdf169675_3d_object_anim.odp b/sd/qa/unit/data/odp/tdf169675_3d_object_anim.odp new file mode 100644 index 000000000000..4873dc336d1d Binary files /dev/null and b/sd/qa/unit/data/odp/tdf169675_3d_object_anim.odp differ diff --git a/sd/qa/unit/export-tests-ooxml4.cxx b/sd/qa/unit/export-tests-ooxml4.cxx index 2dbcae675ab8..84af07623bc0 100644 --- a/sd/qa/unit/export-tests-ooxml4.cxx +++ b/sd/qa/unit/export-tests-ooxml4.cxx @@ -145,6 +145,24 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest4, testTdf168755_anim_on_SmartArt) aSpTgtId); } +CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest4, testtdf169675_3d_object_anim) +{ + createSdImpressDoc("odp/tdf169675_3d_object_anim.odp"); + save(u"Impress Office Open XML"_ustr); + + xmlDocUniquePtr pXmlDoc = parseExport(u"ppt/slides/slide1.xml"_ustr); + + OUString aSpTgtId + = getXPath(pXmlDoc, + "//p:sld/p:timing/p:tnLst/p:par/p:cTn/p:childTnLst/p:seq/p:cTn/p:childTnLst/" + "p:par[1]/p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:par/p:cTn/" + "p:childTnLst/p:set/p:cBhvr/p:tgtEl/p:spTgt", + "spid"); + // Before the fix spid would be -1, because animations for not exported targets (3D objects) + // would be written, now those are omitted + CPPUNIT_ASSERT_MESSAGE("Shape id in animation target can't be -1", aSpTgtId != "-1"); +} + CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest4, testTdf125346) { // There are two themes in the test document, make sure we use the right theme diff --git a/sd/source/filter/eppt/pptx-animations-nodectx.cxx b/sd/source/filter/eppt/pptx-animations-nodectx.cxx index 149e9a266c9e..07c8bd618f78 100644 --- a/sd/source/filter/eppt/pptx-animations-nodectx.cxx +++ b/sd/source/filter/eppt/pptx-animations-nodectx.cxx @@ -8,6 +8,7 @@ */ #include "pptx-animations-nodectx.hxx" +#include <oox/export/shapes.hxx> #include <com/sun/star/animations/AnimationNodeType.hpp> #include <com/sun/star/animations/XAnimate.hpp> #include <com/sun/star/animations/XAnimationNode.hpp> @@ -43,7 +44,7 @@ bool isValidTarget(const Any& rTarget) { Reference<XShape> xShape; - if ((rTarget >>= xShape) && xShape.is()) + if ((rTarget >>= xShape) && drawingml::ShapeExport::IsShapeTypeKnown(xShape)) return true; ParagraphTarget aParagraphTarget;
