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