filter/source/svg/svgfilter.cxx |   32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)

New commits:
commit 7523efa63a1334b36ad0a602054423b7f3c629b8
Author:     Marco Cecchetti <[email protected]>
AuthorDate: Fri Jun 9 15:16:04 2023 +0200
Commit:     Pranam Lashkari <[email protected]>
CommitDate: Tue Jun 13 13:28:01 2023 +0200

    svg export filter: not export hidden slides
    
    Change-Id: I6010f27812a783fd27a423a0f34e30a1b0c584f3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152798
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Pranam Lashkari <[email protected]>

diff --git a/filter/source/svg/svgfilter.cxx b/filter/source/svg/svgfilter.cxx
index 963a9ae2c4d4..3a08bda76078 100644
--- a/filter/source/svg/svgfilter.cxx
+++ b/filter/source/svg/svgfilter.cxx
@@ -430,12 +430,23 @@ bool SVGFilter::filterImpressOrDraw( const Sequence< 
PropertyValue >& rDescripto
                         {
                             Sequence< Reference< XInterface > > 
aSelectedPageSequence;
                             aSelection >>= aSelectedPageSequence;
-                            mSelectedPages.resize( 
aSelectedPageSequence.getLength() );
-                            for( size_t j=0; j<mSelectedPages.size(); ++j )
+                            sal_Int32 nCount = 
aSelectedPageSequence.getLength();
+                            if (nCount > 0)
                             {
-                                uno::Reference< drawing::XDrawPage > 
xDrawPage( aSelectedPageSequence[j],
-                                                                               
 uno::UNO_QUERY );
-                                mSelectedPages[j] = xDrawPage;
+                                size_t nSelectedPageCount = nCount;
+                                for( size_t j=0; j<nSelectedPageCount; ++j )
+                                {
+                                    uno::Reference< drawing::XDrawPage > 
xDrawPage( aSelectedPageSequence[j],
+                                                                               
     uno::UNO_QUERY );
+
+                                    Reference< XPropertySet > xPropSet( 
xDrawPage, UNO_QUERY );
+                                    bool bIsSlideVisible = true;     // 
default: true
+                                    xPropSet->getPropertyValue( "Visible" )  
>>= bIsSlideVisible;
+                                    if (!bIsSlideVisible)
+                                        continue;
+
+                                    mSelectedPages.push_back(xDrawPage);
+                                }
                             }
 
                             // and stop looping. It is likely not getting 
better
@@ -470,19 +481,24 @@ bool SVGFilter::filterImpressOrDraw( const Sequence< 
PropertyValue >& rDescripto
                 {
                     sal_Int32 nDPCount = xDrawPages->getCount();
 
-                    mSelectedPages.resize( nPageToExport != -1 ? 1 : nDPCount 
);
                     sal_Int32 i;
                     for( i = 0; i < nDPCount; ++i )
                     {
                         if( nPageToExport != -1 && nPageToExport == i )
                         {
                             uno::Reference< drawing::XDrawPage > xDrawPage( 
xDrawPages->getByIndex( i ), uno::UNO_QUERY );
-                            mSelectedPages[0] = xDrawPage;
+                            mSelectedPages.push_back(xDrawPage);
                         }
                         else
                         {
                             uno::Reference< drawing::XDrawPage > xDrawPage( 
xDrawPages->getByIndex( i ), uno::UNO_QUERY );
-                            mSelectedPages[i] = xDrawPage;
+                            Reference< XPropertySet > xPropSet( xDrawPage, 
UNO_QUERY );
+                            bool bIsSlideVisible = true;     // default: true
+                            xPropSet->getPropertyValue( "Visible" )  >>= 
bIsSlideVisible;
+                            if (!bIsSlideVisible)
+                                continue;
+
+                            mSelectedPages.push_back(xDrawPage);
                         }
                     }
                 }

Reply via email to