summaryrefslogtreecommitdiff
path: root/basic
diff options
context:
space:
mode:
authorNoel Power <npower@openoffice.org>2009-09-23 11:40:05 +0000
committerNoel Power <npower@openoffice.org>2009-09-23 11:40:05 +0000
commit906fc07bf29b7e3f12848f9e51d087523200a743 (patch)
tree25eb81a4b21609a96e5f73feaa038b1b829269b0 /basic
parent1d6d409c5b2fe07fa2754508954df7fa62ade144 (diff)
add missing Application::Quit bits
Diffstat (limited to 'basic')
-rw-r--r--basic/source/classes/sbxmod.cxx17
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,