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

New commits:
commit 875b4018889efec2c50c405765425d98aa5050d7
Author:     Marco Cecchetti <marco.cecche...@collabora.com>
AuthorDate: Fri Jun 9 15:16:04 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri Oct 20 12:20:16 2023 +0200

    svg export filter: not export hidden slides
    
    This patch contains 48b6965c1cbbd8087d476c74fc2c20faa3e5e2a8
    "fixup for: 7523efa svg export filter: not export hidden slides"
    
    Change-Id: I6010f27812a783fd27a423a0f34e30a1b0c584f3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152798
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Pranam Lashkari <lpra...@collabora.com>
    (cherry picked from commit 7523efa63a1334b36ad0a602054423b7f3c629b8)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157727
    Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158019
    Tested-by: Jenkins

diff --git a/filter/source/svg/svgfilter.cxx b/filter/source/svg/svgfilter.cxx
index 963a9ae2c4d4..71483c209949 100644
--- a/filter/source/svg/svgfilter.cxx
+++ b/filter/source/svg/svgfilter.cxx
@@ -430,12 +430,29 @@ 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
+                                    if (xPropSet.is())
+                                    {
+                                        Reference< XPropertySetInfo > 
xPropSetInfo = xPropSet->getPropertySetInfo();
+                                        if (xPropSetInfo.is() && 
xPropSetInfo->hasPropertyByName("Visible"))
+                                        {
+                                            xPropSet->getPropertyValue( 
"Visible" )  >>= bIsSlideVisible;
+                                            if (!bIsSlideVisible)
+                                                continue;
+                                        }
+                                    }
+                                    mSelectedPages.push_back(xDrawPage);
+                                }
                             }
 
                             // and stop looping. It is likely not getting 
better
@@ -470,19 +487,30 @@ 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
+                            if (xPropSet.is())
+                            {
+                                Reference< XPropertySetInfo > xPropSetInfo = 
xPropSet->getPropertySetInfo();
+                                if (xPropSetInfo.is() && 
xPropSetInfo->hasPropertyByName("Visible"))
+                                {
+                                    xPropSet->getPropertyValue( "Visible" )  
>>= bIsSlideVisible;
+                                    if (!bIsSlideVisible)
+                                        continue;
+                                }
+                            }
+                            mSelectedPages.push_back(xDrawPage);
                         }
                     }
                 }

Reply via email to