vbahelper/source/vbahelper/vbaapplicationbase.cxx | 14 ++++++++++++-- vbahelper/source/vbahelper/vbadocumentsbase.cxx | 20 ++++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-)
New commits: commit 0e39803ea6a71676127ff75cd56bb29b232276ac Author: Tor Lillqvist <t...@collabora.com> AuthorDate: Wed Aug 14 15:46:16 2019 +0300 Commit: Tor Lillqvist <t...@collabora.com> CommitDate: Fri Sep 20 15:31:42 2019 +0200 Try harder to avoid exceptions screwing stuff up for OLE clients Change-Id: I5e9ae8669c4f5c561a09f5f21f11a675a40e5929 (cherry picked from commit 81d6fbf3acaac13180424740a4be996bacf2aba7) Reviewed-on: https://gerrit.libreoffice.org/79249 Reviewed-by: Tor Lillqvist <t...@collabora.com> Tested-by: Tor Lillqvist <t...@collabora.com> diff --git a/vbahelper/source/vbahelper/vbaapplicationbase.cxx b/vbahelper/source/vbahelper/vbaapplicationbase.cxx index a441653551e4..35d53044cf12 100644 --- a/vbahelper/source/vbahelper/vbaapplicationbase.cxx +++ b/vbahelper/source/vbahelper/vbaapplicationbase.cxx @@ -222,8 +222,18 @@ sal_Bool SAL_CALL VbaApplicationBase::getInteractive() uno::Reference< frame::XModel > xModel = getCurrentDocument(); if (!xModel.is()) return true; - uno::Reference< frame::XFrame > xFrame( xModel->getCurrentController()->getFrame(), uno::UNO_QUERY_THROW ); - uno::Reference< awt::XWindow2 > xWindow( xFrame->getContainerWindow(), uno::UNO_QUERY_THROW ); + + uno::Reference< frame::XController > xController( xModel->getCurrentController() ); + if (!xController.is()) + return true; + + uno::Reference< frame::XFrame > xFrame( xController->getFrame() ); + if (!xFrame.is()) + return true; + + uno::Reference< awt::XWindow2 > xWindow( xFrame->getContainerWindow(), uno::UNO_QUERY ); + if (!xWindow.is()) + return true; return xWindow->isEnabled(); } diff --git a/vbahelper/source/vbahelper/vbadocumentsbase.cxx b/vbahelper/source/vbahelper/vbadocumentsbase.cxx index 7a993d7aa2cd..ccb28f2ad5fe 100644 --- a/vbahelper/source/vbahelper/vbadocumentsbase.cxx +++ b/vbahelper/source/vbahelper/vbadocumentsbase.cxx @@ -222,7 +222,15 @@ uno::Any VbaDocumentsBase::createDocument() // #163808# determine state of Application.ScreenUpdating and Application.Interactive symbols (before new document is opened) uno::Reference< XApplicationBase > xApplication( Application(), uno::UNO_QUERY ); bool bScreenUpdating = !xApplication.is() || xApplication->getScreenUpdating(); - bool bInteractive = !xApplication.is() || xApplication->getInteractive(); + bool bInteractive = true; + + try + { + bInteractive = !xApplication.is() || xApplication->getInteractive(); + } + catch( const uno::Exception& ) + { + } uno::Reference< frame::XDesktop2 > xLoader = frame::Desktop::create(mxContext); OUString sURL; @@ -255,7 +263,15 @@ uno::Any VbaDocumentsBase::openDocument( const OUString& rFileName, const uno::A // #163808# determine state of Application.ScreenUpdating and Application.Interactive symbols (before new document is opened) uno::Reference< XApplicationBase > xApplication( Application(), uno::UNO_QUERY ); bool bScreenUpdating = !xApplication.is() || xApplication->getScreenUpdating(); - bool bInteractive = !xApplication.is() || xApplication->getInteractive(); + bool bInteractive = true; + + try + { + bInteractive = !xApplication.is() || xApplication->getInteractive(); + } + catch( const uno::Exception& ) + { + } // we need to detect if this is a URL, if not then assume it's a file path OUString aURL; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits