diff options
author | Noel Power <npower@openoffice.org> | 2009-09-23 11:40:05 +0000 |
---|---|---|
committer | Noel Power <npower@openoffice.org> | 2009-09-23 11:40:05 +0000 |
commit | 906fc07bf29b7e3f12848f9e51d087523200a743 (patch) | |
tree | 25eb81a4b21609a96e5f73feaa038b1b829269b0 /basic | |
parent | 1d6d409c5b2fe07fa2754508954df7fa62ade144 (diff) |
add missing Application::Quit bits
Diffstat (limited to 'basic')
-rw-r--r-- | basic/source/classes/sbxmod.cxx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx index 889426d68d4c..dd5600ed35a0 100644 --- a/basic/source/classes/sbxmod.cxx +++ b/basic/source/classes/sbxmod.cxx @@ -706,6 +706,22 @@ USHORT SbModule::Run( SbMethod* pMeth ) delete pRt; pMOD = pOldMod; + if ( pINST->nCallLvl == 0 && IsVBACompat() ) + { + // VBA always ensure screenupdating is enabled after completing + StarBASIC* pBasic = PTR_CAST(StarBASIC,GetParent()); + if ( pBasic && pBasic->IsDocBasic() ) + { + uno::Any aUnoVar; + ::rtl::OUString sVarName( ::rtl::OUString::createFromAscii( "ThisComponent" ) ); + SbUnoObject* pGlobs = dynamic_cast<SbUnoObject*>( pBasic->Find( sVarName, SbxCLASS_DONTCARE ) ); + if ( pGlobs ) + aUnoVar = pGlobs->getUnoAny(); + uno::Reference< frame::XModel > xModel( aUnoVar, uno::UNO_QUERY); + if ( xModel.is() ) + xModel->unlockControllers(); + } + } if( bDelInst ) { // #57841 Uno-Objekte, die in RTL-Funktionen gehalten werden, @@ -730,6 +746,7 @@ USHORT SbModule::Run( SbMethod* pMeth ) pINST->nCallLvl--; // Call-Level wieder runter StarBASIC::FatalError( SbERR_STACK_OVERFLOW ); } + if( bDelInst ) { // #57841 Uno-Objekte, die in RTL-Funktionen gehalten werden, |