summaryrefslogtreecommitdiff
path: root/sfx2/source/appl/app.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/source/appl/app.cxx')
-rw-r--r--sfx2/source/appl/app.cxx17
1 files changed, 16 insertions, 1 deletions
diff --git a/sfx2/source/appl/app.cxx b/sfx2/source/appl/app.cxx
index 6dab36f4b8c1..f5c5725b658c 100644
--- a/sfx2/source/appl/app.cxx
+++ b/sfx2/source/appl/app.cxx
@@ -128,6 +128,20 @@ SfxApplication* SfxApplication::Get()
return g_pSfxApplication;
}
+void SfxApplication::SetModule(SfxToolsModule nSharedLib, std::unique_ptr<SfxModule> pModule)
+{
+ assert(g_pSfxApplication != nullptr);
+
+ g_pSfxApplication->pImpl->aModules[nSharedLib] = std::move(pModule);
+}
+
+SfxModule* SfxApplication::GetModule(SfxToolsModule nSharedLib)
+{
+ if (!g_pSfxApplication) // It is possible GetModule is called before SfxApplication is initialised via GetOrCreate()
+ return nullptr;
+ return g_pSfxApplication->pImpl->aModules[nSharedLib].get();
+}
+
SfxApplication* SfxApplication::GetOrCreate()
{
// SFX on demand
@@ -207,7 +221,8 @@ SfxApplication::~SfxApplication()
Broadcast( SfxSimpleHint(SFX_HINT_DYING) );
- SfxModule::DestroyModules_Impl();
+ for (auto &module : pImpl->aModules) // Clear modules
+ module.reset();
#if HAVE_FEATURE_DESKTOP
delete pSfxHelp;