summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--filter/source/svg/svgfilter.cxx32
1 files changed, 24 insertions, 8 deletions
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);
}
}
}