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);
     }
 }
 

Reply via email to