summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/source/app/app.cxx7
-rw-r--r--scripting/source/basprov/basprov.cxx15
-rw-r--r--scripting/source/basprov/basprov.hxx7
3 files changed, 21 insertions, 8 deletions
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 0cc6c649e7e1..fa8204304f53 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -1686,13 +1686,6 @@ int Desktop::doShutdown()
if ( pExecGlobals->bRestartRequested )
SetRestartState();
- if (pExecGlobals->xGlobalBroadcaster.is())
- {
- css::document::DocumentEvent aEvent;
- aEvent.EventName = "OnCloseApp";
- pExecGlobals->xGlobalBroadcaster->documentEventOccured(aEvent);
- }
-
// Restore old value
const CommandLineArgs& rCmdLineArgs = GetCommandLineArgs();
if ( rCmdLineArgs.IsHeadless() || rCmdLineArgs.IsEventTesting() )
diff --git a/scripting/source/basprov/basprov.cxx b/scripting/source/basprov/basprov.cxx
index f1805c36a16e..6c856d5a5a24 100644
--- a/scripting/source/basprov/basprov.cxx
+++ b/scripting/source/basprov/basprov.cxx
@@ -158,6 +158,17 @@ namespace basprov
return bIsShared;
}
+ // SfxListener
+ void BasicProviderImpl::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+ if (auto pManager = dynamic_cast<const BasicManager*>(&rBC))
+ if (pManager == m_pAppBasicManager && rHint.GetId() == SfxHintId::Dying)
+ {
+ EndListening(*m_pAppBasicManager);
+ m_pAppBasicManager = nullptr;
+ }
+ }
+
// XServiceInfo
OUString BasicProviderImpl::getImplementationName( )
{
@@ -258,7 +269,11 @@ namespace basprov
// TODO
if ( !m_pAppBasicManager )
+ {
m_pAppBasicManager = SfxApplication::GetBasicManager();
+ if (m_pAppBasicManager)
+ StartListening(*m_pAppBasicManager);
+ }
if ( !m_xLibContainerApp.is() )
m_xLibContainerApp.set( SfxGetpApp()->GetBasicContainer(), UNO_QUERY );
diff --git a/scripting/source/basprov/basprov.hxx b/scripting/source/basprov/basprov.hxx
index b3ba2617982c..d10f10e7e970 100644
--- a/scripting/source/basprov/basprov.hxx
+++ b/scripting/source/basprov/basprov.hxx
@@ -29,6 +29,7 @@
#include <com/sun/star/document/XScriptInvocationContext.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <cppuhelper/implbase.hxx>
+#include <svl/lstner.hxx>
class BasicManager;
@@ -47,7 +48,7 @@ namespace basprov
css::script::browse::XBrowseNode > BasicProviderImpl_BASE;
- class BasicProviderImpl : public BasicProviderImpl_BASE
+ class BasicProviderImpl : public BasicProviderImpl_BASE, public SfxListener
{
private:
BasicManager* m_pAppBasicManager;
@@ -86,6 +87,10 @@ namespace basprov
virtual css::uno::Sequence< css::uno::Reference< css::script::browse::XBrowseNode > > SAL_CALL getChildNodes( ) override;
virtual sal_Bool SAL_CALL hasChildNodes( ) override;
virtual sal_Int16 SAL_CALL getType( ) override;
+
+ protected:
+ // SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
};