summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2016-06-06 13:25:46 +0200
committerNoel Grandin <noel@peralex.com>2016-06-06 15:31:41 +0200
commitdfa8ecef62f4f55aa614013a80ad9aeb61a4fdac (patch)
treeb6910678c51b6aba2796cf6af324aa9e44e574ce
parent55a07417c8df1f451cac33d5dfc6a2ef450fa544 (diff)
Revert "Revert "Simplify sfx2 removing SfxModuleArr_Impl and dummy SfxModule flag""
This reverts commit abde31a2bc68302e1afafe1fcc3f5d85369010f8. Since my analysis was completely incorrect, and the bug was elsewhere.
-rw-r--r--basctl/source/basicide/basicmod.hxx2
-rw-r--r--include/sfx2/module.hxx7
-rw-r--r--sc/source/ui/app/scmod.cxx2
-rw-r--r--sd/source/ui/app/sdmod.cxx2
-rw-r--r--sfx2/source/appl/module.cxx105
-rw-r--r--starmath/source/smmod.cxx2
-rw-r--r--sw/source/uibase/app/swmodule.cxx2
7 files changed, 38 insertions, 84 deletions
diff --git a/basctl/source/basicide/basicmod.hxx b/basctl/source/basicide/basicmod.hxx
index f4629278a003..b52a1c7a35a3 100644
--- a/basctl/source/basicide/basicmod.hxx
+++ b/basctl/source/basicide/basicmod.hxx
@@ -31,7 +31,7 @@ class Module : public SfxModule
static Module* mpModule;
public:
Module ( ResMgr *pMgr, SfxObjectFactory *pObjFact) :
- SfxModule( pMgr, false, pObjFact, nullptr )
+ SfxModule( pMgr, pObjFact, nullptr )
{ }
public:
static Module*& Get () { return mpModule; }
diff --git a/include/sfx2/module.hxx b/include/sfx2/module.hxx
index 6e10d7cd029b..787167503fd3 100644
--- a/include/sfx2/module.hxx
+++ b/include/sfx2/module.hxx
@@ -35,7 +35,6 @@ class SfxObjectFactory;
class ModalDialog;
class SfxObjectFactory;
class SfxModule;
-class SfxModuleArr_Impl;
class SfxModule_Impl;
class SfxSlotPool;
struct SfxChildWinContextFactory;
@@ -54,7 +53,6 @@ class SFX2_DLLPUBLIC SfxModule : public SfxShell
{
private:
ResMgr* pResMgr;
- bool bDummy : 1;
SfxModule_Impl* pImpl;
SAL_DLLPRIVATE void Construct_Impl();
@@ -68,8 +66,7 @@ private:
public:
- SfxModule( ResMgr* pMgrP, bool bDummy,
- SfxObjectFactory* pFactoryP, ... );
+ SfxModule( ResMgr* pMgrP, SfxObjectFactory* pFactoryP, ... );
virtual ~SfxModule();
ResMgr* GetResMgr();
@@ -96,7 +93,7 @@ public:
static FieldUnit GetModuleFieldUnit( css::uno::Reference< css::frame::XFrame > const & i_frame );
FieldUnit GetFieldUnit() const;
- SAL_DLLPRIVATE static SfxModuleArr_Impl& GetModules_Impl();
+ SAL_DLLPRIVATE static std::vector<SfxModule*>& GetModules_Impl();
SAL_DLLPRIVATE static void DestroyModules_Impl();
SAL_DLLPRIVATE SfxTbxCtrlFactArr_Impl* GetTbxCtrlFactories_Impl() const;
SAL_DLLPRIVATE SfxStbCtrlFactArr_Impl* GetStbCtrlFactories_Impl() const;
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx
index 359fb23150d4..c45480ffaaa0 100644
--- a/sc/source/ui/app/scmod.cxx
+++ b/sc/source/ui/app/scmod.cxx
@@ -130,7 +130,7 @@ void ScModule::InitInterface_Impl()
}
ScModule::ScModule( SfxObjectFactory* pFact ) :
- SfxModule( ResMgr::CreateResMgr( "sc" ), false, pFact, nullptr ),
+ SfxModule( ResMgr::CreateResMgr( "sc" ), pFact, nullptr ),
aIdleTimer("sc ScModule IdleTimer"),
aSpellIdle("sc ScModule SpellIdle"),
mpDragData(new ScDragData),
diff --git a/sd/source/ui/app/sdmod.cxx b/sd/source/ui/app/sdmod.cxx
index 59f62db036d0..9b540681a7b8 100644
--- a/sd/source/ui/app/sdmod.cxx
+++ b/sd/source/ui/app/sdmod.cxx
@@ -67,7 +67,7 @@ void SdModule::InitInterface_Impl()
// Ctor
SdModule::SdModule(SfxObjectFactory* pFact1, SfxObjectFactory* pFact2 )
-: SfxModule( ResMgr::CreateResMgr("sd"), false,
+: SfxModule( ResMgr::CreateResMgr("sd"),
pFact1, pFact2, nullptr ),
pTransferClip(nullptr),
pTransferDrag(nullptr),
diff --git a/sfx2/source/appl/module.cxx b/sfx2/source/appl/module.cxx
index 2cedda83662c..bb1730dedcde 100644
--- a/sfx2/source/appl/module.cxx
+++ b/sfx2/source/appl/module.cxx
@@ -42,41 +42,7 @@
#include "childwinimpl.hxx"
#include <ctrlfactoryimpl.hxx>
-class SfxModuleArr_Impl
-{
- typedef ::std::vector<SfxModule*> DataType;
- DataType maData;
-public:
-
- typedef DataType::iterator iterator;
-
- iterator begin()
- {
- return maData.begin();
- }
-
- void erase( const iterator& it )
- {
- maData.erase(it);
- }
-
- SfxModule* operator[] ( size_t i )
- {
- return maData[i];
- }
-
- void push_back( SfxModule* p )
- {
- maData.push_back(p);
- }
-
- size_t size() const
- {
- return maData.size();
- }
-};
-
-static SfxModuleArr_Impl* pModules=nullptr;
+static std::vector<SfxModule*>* pModules=nullptr;
class SfxModule_Impl
{
@@ -136,9 +102,8 @@ ResMgr* SfxModule::GetResMgr()
return pResMgr;
}
-SfxModule::SfxModule( ResMgr* pMgrP, bool bDummyP,
- SfxObjectFactory* pFactoryP, ... )
- : pResMgr( pMgrP ), bDummy( bDummyP ), pImpl(nullptr)
+SfxModule::SfxModule( ResMgr* pMgrP, SfxObjectFactory* pFactoryP, ... )
+ : pResMgr( pMgrP ), pImpl(nullptr)
{
Construct_Impl();
va_list pVarArgs;
@@ -151,49 +116,42 @@ SfxModule::SfxModule( ResMgr* pMgrP, bool bDummyP,
void SfxModule::Construct_Impl()
{
- if( !bDummy )
- {
- SfxApplication *pApp = SfxGetpApp();
- SfxModuleArr_Impl& rArr = GetModules_Impl();
- SfxModule* pPtr = this;
- rArr.push_back( pPtr );
- pImpl = new SfxModule_Impl;
- pImpl->pSlotPool = new SfxSlotPool(&pApp->GetAppSlotPool_Impl());
-
- pImpl->pTbxCtrlFac=nullptr;
- pImpl->pStbCtrlFac=nullptr;
- pImpl->pFactArr=nullptr;
- pImpl->pImgListSmall=nullptr;
- pImpl->pImgListBig=nullptr;
-
- SetPool( &pApp->GetPool() );
- }
+ SfxApplication *pApp = SfxGetpApp();
+ std::vector<SfxModule*> &rArr = GetModules_Impl();
+ rArr.push_back( this );
+ pImpl = new SfxModule_Impl;
+ pImpl->pSlotPool = new SfxSlotPool(&pApp->GetAppSlotPool_Impl());
+
+ pImpl->pTbxCtrlFac=nullptr;
+ pImpl->pStbCtrlFac=nullptr;
+ pImpl->pFactArr=nullptr;
+ pImpl->pImgListSmall=nullptr;
+ pImpl->pImgListBig=nullptr;
+
+ SetPool( &pApp->GetPool() );
}
SfxModule::~SfxModule()
{
- if( !bDummy )
+ if ( SfxGetpApp()->Get_Impl() )
{
- if ( SfxGetpApp()->Get_Impl() )
+ // The module will be destroyed before the Deinitialize,
+ // so remove from the array
+ std::vector<SfxModule*>& rArr = GetModules_Impl();
+ for( sal_uInt16 nPos = rArr.size(); nPos--; )
{
- // The module will be destroyed before the Deinitialize,
- // so remove from the array
- SfxModuleArr_Impl& rArr = GetModules_Impl();
- for( sal_uInt16 nPos = rArr.size(); nPos--; )
+ if( rArr[ nPos ] == this )
{
- if( rArr[ nPos ] == this )
- {
- rArr.erase( rArr.begin() + nPos );
- break;
- }
+ rArr.erase( rArr.begin() + nPos );
+ break;
}
-
- delete pImpl;
}
- delete pResMgr;
}
+
+ delete pImpl;
+ delete pResMgr;
}
@@ -292,10 +250,10 @@ VclPtr<SfxTabPage> SfxModule::CreateTabPage( sal_uInt16, vcl::Window*, const Sfx
return VclPtr<SfxTabPage>();
}
-SfxModuleArr_Impl& SfxModule::GetModules_Impl()
+std::vector<SfxModule*>& SfxModule::GetModules_Impl()
{
if( !pModules )
- pModules = new SfxModuleArr_Impl;
+ pModules = new std::vector<SfxModule*>;
return *pModules;
};
@@ -303,10 +261,9 @@ void SfxModule::DestroyModules_Impl()
{
if ( pModules )
{
- SfxModuleArr_Impl& rModules = *pModules;
- for( sal_uInt16 nPos = rModules.size(); nPos--; )
+ for( sal_uInt16 nPos = pModules->size(); nPos--; )
{
- SfxModule* pMod = rModules[nPos];
+ SfxModule* pMod = (*pModules)[nPos];
delete pMod;
}
delete pModules;
diff --git a/starmath/source/smmod.cxx b/starmath/source/smmod.cxx
index 1d8fa98f2ea8..02a45263e2ff 100644
--- a/starmath/source/smmod.cxx
+++ b/starmath/source/smmod.cxx
@@ -159,7 +159,7 @@ void SmModule::InitInterface_Impl()
}
SmModule::SmModule(SfxObjectFactory* pObjFact) :
- SfxModule(ResMgr::CreateResMgr("sm"), false, pObjFact, nullptr)
+ SfxModule(ResMgr::CreateResMgr("sm"), pObjFact, nullptr)
{
SetName("StarMath");
diff --git a/sw/source/uibase/app/swmodule.cxx b/sw/source/uibase/app/swmodule.cxx
index eae15531a905..3ab2832e698a 100644
--- a/sw/source/uibase/app/swmodule.cxx
+++ b/sw/source/uibase/app/swmodule.cxx
@@ -140,7 +140,7 @@ using namespace ::com::sun::star::uno;
SwModule::SwModule( SfxObjectFactory* pWebFact,
SfxObjectFactory* pFact,
SfxObjectFactory* pGlobalFact )
- : SfxModule( ResMgr::CreateResMgr( "sw" ), false, pWebFact,
+ : SfxModule( ResMgr::CreateResMgr( "sw" ), pWebFact,
pFact, pGlobalFact, nullptr ),
m_pModuleConfig(nullptr),
m_pUsrPref(nullptr),