diff options
author | Vladimir Glazunov <vg@openoffice.org> | 2010-11-08 16:01:31 +0100 |
---|---|---|
committer | Vladimir Glazunov <vg@openoffice.org> | 2010-11-08 16:01:31 +0100 |
commit | 9b5d956df3f8124cafb20c4ffe46133badfc78a3 (patch) | |
tree | ff3caec145be50e845c97b38a51d04c159ca02a2 /scripting | |
parent | 0abccb84f7eac705503c6cb904ed91864f5acab8 (diff) | |
parent | 11e03877e276f9ffc1b2d849f9684303f722852e (diff) |
CWS-TOOLING: integrate CWS dba34a
Diffstat (limited to 'scripting')
-rw-r--r-- | scripting/source/basprov/basscript.cxx | 22 | ||||
-rw-r--r-- | scripting/source/basprov/basscript.hxx | 6 | ||||
-rw-r--r-- | scripting/source/basprov/makefile.mk | 1 |
3 files changed, 28 insertions, 1 deletions
diff --git a/scripting/source/basprov/basscript.cxx b/scripting/source/basprov/basscript.cxx index c6de155e3ed0..24bba1e7bff6 100644 --- a/scripting/source/basprov/basscript.cxx +++ b/scripting/source/basprov/basscript.cxx @@ -80,11 +80,33 @@ namespace basprov ,m_documentBasicManager( &documentBasicManager ) ,m_xDocumentScriptContext( documentScriptContext ) { + StartListening( *m_documentBasicManager ); } // ----------------------------------------------------------------------------- BasicScriptImpl::~BasicScriptImpl() { + if ( m_documentBasicManager ) + EndListening( *m_documentBasicManager ); + } + + // ----------------------------------------------------------------------------- + // SfxListener + // ----------------------------------------------------------------------------- + void BasicScriptImpl::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) + { + if ( &rBC != m_documentBasicManager ) + { + OSL_ENSURE( false, "BasicScriptImpl::Notify: where does this come from?" ); + // not interested in + return; + } + const SfxSimpleHint* pSimpleHint = PTR_CAST( SfxSimpleHint, &rHint ); + if ( pSimpleHint && ( pSimpleHint->GetId() == SFX_HINT_DYING ) ) + { + m_documentBasicManager = NULL; + EndListening( rBC ); // prevent multiple notifications + } } // ----------------------------------------------------------------------------- diff --git a/scripting/source/basprov/basscript.hxx b/scripting/source/basprov/basscript.hxx index 4a3d6f1ab61d..772a9166cde3 100644 --- a/scripting/source/basprov/basscript.hxx +++ b/scripting/source/basprov/basscript.hxx @@ -32,6 +32,7 @@ #include <com/sun/star/document/XScriptInvocationContext.hpp> #include <cppuhelper/implbase1.hxx> #include <basic/sbmeth.hxx> +#include <svl/lstner.hxx> class BasicManager; @@ -49,7 +50,7 @@ namespace basprov ::com::sun::star::script::provider::XScript > BasicScriptImpl_BASE; - class BasicScriptImpl : public BasicScriptImpl_BASE + class BasicScriptImpl : public BasicScriptImpl_BASE, public SfxListener { private: SbMethodRef m_xMethod; @@ -80,6 +81,9 @@ namespace basprov ::com::sun::star::script::provider::ScriptFrameworkErrorException, ::com::sun::star::reflection::InvocationTargetException, ::com::sun::star::uno::RuntimeException ); + + // SfxListener + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); }; //......................................................................... diff --git a/scripting/source/basprov/makefile.mk b/scripting/source/basprov/makefile.mk index c98f961e6bd3..bde15f95d5a4 100644 --- a/scripting/source/basprov/makefile.mk +++ b/scripting/source/basprov/makefile.mk @@ -58,6 +58,7 @@ SHL1STDLIBS= \ $(SFX2LIB) \ $(BASICLIB) \ $(VCLLIB) \ + $(SVLLIB) \ $(TOOLSLIB) \ $(UCBHELPERLIB) \ $(COMPHELPERLIB) \ |