[Libreoffice-commits] core.git: dbaccess/source
Mike Kaganski
mike.kaganski at collabora.com
Wed Nov 8 17:28:04 UTC 2017
dbaccess/source/filter/xml/xmlfilter.cxx | 38 ++++++++++++++++++-------------
1 file changed, 23 insertions(+), 15 deletions(-)
New commits:
commit 80af51be1aa85733b9c0b696a93edd8c6520811c
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date: Wed Nov 8 14:22:44 2017 +0200
ODBFilter::filter: Also leave window wait on exception
Change-Id: I6bb759c583e15f229bc2afa178a1d1d90d8315ef
Reviewed-on: https://gerrit.libreoffice.org/44458
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
diff --git a/dbaccess/source/filter/xml/xmlfilter.cxx b/dbaccess/source/filter/xml/xmlfilter.cxx
index 8069a577f8e1..f386206bec66 100644
--- a/dbaccess/source/filter/xml/xmlfilter.cxx
+++ b/dbaccess/source/filter/xml/xmlfilter.cxx
@@ -244,30 +244,38 @@ css::uno::Reference< css::uno::XInterface >
return static_cast< XServiceInfo* >(new ODBFilter( comphelper::getComponentContext(_rxORB)));
}
-
-sal_Bool SAL_CALL ODBFilter::filter( const Sequence< PropertyValue >& rDescriptor )
+namespace {
+class FocusWindowWaitGuard
{
- uno::Reference< css::awt::XWindow > xWindow;
+public:
+ FocusWindowWaitGuard()
{
SolarMutexGuard aGuard;
- vcl::Window* pFocusWindow = Application::GetFocusWindow();
- xWindow = VCLUnoHelper::GetInterface( pFocusWindow );
- if( pFocusWindow )
- pFocusWindow->EnterWait();
+ mpWindow.set(Application::GetFocusWindow());
+ if (mpWindow)
+ mpWindow->EnterWait();
}
+ ~FocusWindowWaitGuard()
+ {
+ if (mpWindow)
+ {
+ SolarMutexGuard aGuard;
+ mpWindow->LeaveWait();
+ }
+ }
+private:
+ VclPtr<vcl::Window> mpWindow;
+};
+}
+
+sal_Bool SAL_CALL ODBFilter::filter( const Sequence< PropertyValue >& rDescriptor )
+{
+ FocusWindowWaitGuard aWindowFocusGuard;
bool bRet = false;
if ( GetModel().is() )
bRet = implImport( rDescriptor );
- if ( xWindow.is() )
- {
- SolarMutexGuard aGuard;
- VclPtr<vcl::Window> pFocusWindow = VCLUnoHelper::GetWindow( xWindow );
- if ( pFocusWindow )
- pFocusWindow->LeaveWait();
- }
-
return bRet;
}
More information about the Libreoffice-commits
mailing list