diff options
Diffstat (limited to 'sfx2/source/appl/app.cxx')
-rw-r--r-- | sfx2/source/appl/app.cxx | 17 |
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; |