sd/source/ui/tools/SlideshowLayerRenderer.cxx | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-)
New commits: commit baa003816fbca6cf37c1c7239fa1d3dcf721221d Author: Mohit Marathe <[email protected]> AuthorDate: Thu Mar 26 17:11:42 2026 +0530 Commit: Mohit Marathe <[email protected]> CommitDate: Mon Mar 30 06:10:53 2026 +0200 cool#14749 sd: fix opaque paragraph animation layers in PPTX slideshow changeBackground only handled SdrRectanglePrimitive2D, but PPTX text boxes produce ObjectInfoPrimitive2D wrapping SdrCustomShapePrimitive2D. The type check never matched, so fill polypolygons were never hidden, making paragraph layer bitmaps fully opaque. Remove the type check in changeBackground so it unconditionally decomposes all primitives. Add BufferedDecompositionPrimitive2D handling to changePolyPolys so it can recurse through SdrCustomShapePrimitive2D to reach the fill polypolygons, mirroring the pattern already used by findTextBlock. Signed-off-by: Mohit Marathe <[email protected]> Change-Id: I102b2482b0d7fc5dfdd645bcd4f9ff6aa680b3ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202733 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> diff --git a/sd/source/ui/tools/SlideshowLayerRenderer.cxx b/sd/source/ui/tools/SlideshowLayerRenderer.cxx index b12be4f742ed..f9de6af525d0 100644 --- a/sd/source/ui/tools/SlideshowLayerRenderer.cxx +++ b/sd/source/ui/tools/SlideshowLayerRenderer.cxx @@ -229,10 +229,18 @@ void changePolyPolys( if (!bRenderObject) rPrimitivesToUnhide.push_back(pBasePrimitive); } + else if (pBasePrimitive->getPrimitive2DID() == PRIMITIVE2D_ID_SDRCUSTOMSHAPEPRIMITIVE2D + || pBasePrimitive->getPrimitive2DID() == PRIMITIVE2D_ID_SDRRECTANGLEPRIMITIVE2D) + { + drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; + pBasePrimitive->get2DDecomposition(aPrimitiveContainer, + drawinglayer::geometry::ViewInformation2D()); + changePolyPolys(aPrimitiveContainer, bRenderObject, rPrimitivesToUnhide); + } } } -/// Searches for rectangle primitive and changes if the background should be rendered +/// Searches for shape primitives and changes if the background should be rendered void changeBackground( drawinglayer::primitive2d::Primitive2DContainer const& rContainer, bool bRenderObject, std::vector<drawinglayer::primitive2d::Primitive2DReference>& rPrimitivesToUnhide) @@ -240,13 +248,10 @@ void changeBackground( for (const drawinglayer::primitive2d::Primitive2DReference& rBasePrimitive : rContainer) { drawinglayer::primitive2d::BasePrimitive2D* pBasePrimitive = rBasePrimitive.get(); - if (pBasePrimitive->getPrimitive2DID() == PRIMITIVE2D_ID_SDRRECTANGLEPRIMITIVE2D) - { - drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; - pBasePrimitive->get2DDecomposition(aPrimitiveContainer, - drawinglayer::geometry::ViewInformation2D()); - changePolyPolys(aPrimitiveContainer, bRenderObject, rPrimitivesToUnhide); - } + drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; + pBasePrimitive->get2DDecomposition(aPrimitiveContainer, + drawinglayer::geometry::ViewInformation2D()); + changePolyPolys(aPrimitiveContainer, bRenderObject, rPrimitivesToUnhide); } }
