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

New commits:
commit ce6f43c490f1004e4e9ee274a621679683e49881
Author:     Marco Cecchetti <marco.cecche...@collabora.com>
AuthorDate: Wed Jun 14 14:13:09 2023 +0200
Commit:     Marco Cecchetti <marco.cecche...@collabora.com>
CommitDate: Wed Jun 14 21:18:43 2023 +0200

    fixup for: 7523efa svg export filter: not export hidden slides
    
    It seems that the Visible property does not always exist
    
    That was causing a failure in Online Impress:
    - swicth to master view
    - select any object in the master slide
    - result: the object is not selected or getting focus and the server
    report an error
    
    Change-Id: I77b0211c6e13da1804457ba48098bbee821b7d4a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153049
    Reviewed-by: Gökay ŞATIR <gokaysa...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/filter/source/svg/svgfilter.cxx b/filter/source/svg/svgfilter.cxx
index 3a08bda76078..71483c209949 100644
--- a/filter/source/svg/svgfilter.cxx
+++ b/filter/source/svg/svgfilter.cxx
@@ -441,10 +441,16 @@ bool SVGFilter::filterImpressOrDraw( const Sequence< 
PropertyValue >& rDescripto
 
                                     Reference< XPropertySet > xPropSet( 
xDrawPage, UNO_QUERY );
                                     bool bIsSlideVisible = true;     // 
default: true
-                                    xPropSet->getPropertyValue( "Visible" )  
>>= bIsSlideVisible;
-                                    if (!bIsSlideVisible)
-                                        continue;
-
+                                    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);
                                 }
                             }
@@ -494,10 +500,16 @@ bool SVGFilter::filterImpressOrDraw( const Sequence< 
PropertyValue >& rDescripto
                             uno::Reference< drawing::XDrawPage > xDrawPage( 
xDrawPages->getByIndex( i ), uno::UNO_QUERY );
                             Reference< XPropertySet > xPropSet( xDrawPage, 
UNO_QUERY );
                             bool bIsSlideVisible = true;     // default: true
-                            xPropSet->getPropertyValue( "Visible" )  >>= 
bIsSlideVisible;
-                            if (!bIsSlideVisible)
-                                continue;
-
+                            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