summaryrefslogtreecommitdiff
path: root/UnoControls
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-09-17 13:12:21 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-09-18 14:25:14 +0200
commit2ae258946eac4f4a9a812de8777e874f1701a61b (patch)
treefe85d71d4872e0cd9185e2ccb571bf3fb2b0c201 /UnoControls
parent3a1aa1c2e7192fa3fa0e3fdca70ef4dd68e215e9 (diff)
loplugin:useuniqueptr in BaseContainerControl
Change-Id: If78893d47d2b504b01652575579c6972a3863a09 Reviewed-on: https://gerrit.libreoffice.org/60620 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'UnoControls')
-rw-r--r--UnoControls/inc/basecontainercontrol.hxx5
-rw-r--r--UnoControls/source/base/basecontainercontrol.cxx37
2 files changed, 7 insertions, 35 deletions
diff --git a/UnoControls/inc/basecontainercontrol.hxx b/UnoControls/inc/basecontainercontrol.hxx
index b986a58eda98..3cc791444c24 100644
--- a/UnoControls/inc/basecontainercontrol.hxx
+++ b/UnoControls/inc/basecontainercontrol.hxx
@@ -30,6 +30,7 @@
#include <com/sun/star/container/ContainerEvent.hpp>
#include <com/sun/star/container/XIndexReplace.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
+#include <memory>
#include <vector>
#include "basecontrol.hxx"
@@ -152,10 +153,8 @@ protected:
private:
void impl_activateTabControllers();
- void impl_cleanMemory();
-
// list of pointer of "struct IMPL_ControlInfo" to hold child-controls
- ::std::vector< IMPL_ControlInfo* > maControlInfoList;
+ ::std::vector< std::unique_ptr<IMPL_ControlInfo> > maControlInfoList;
// list of references of XTabController to hold tab-order in this container
css::uno::Sequence< css::uno::Reference< css::awt::XTabController > > m_xTabControllerList;
diff --git a/UnoControls/source/base/basecontainercontrol.cxx b/UnoControls/source/base/basecontainercontrol.cxx
index 3896cf7bacee..b5dd4853f7e3 100644
--- a/UnoControls/source/base/basecontainercontrol.cxx
+++ b/UnoControls/source/base/basecontainercontrol.cxx
@@ -43,7 +43,6 @@ BaseContainerControl::BaseContainerControl( const Reference< XComponentContext >
BaseContainerControl::~BaseContainerControl()
{
- impl_cleanMemory();
}
// XInterface
@@ -207,7 +206,7 @@ void SAL_CALL BaseContainerControl::addControl ( const OUString& rName, const Re
pNewControl->xControl = rControl;
// and insert in list
- maControlInfoList.push_back( pNewControl );
+ maControlInfoList.emplace_back( pNewControl );
// initialize new control
pNewControl->xControl->setContext ( static_cast<OWeakObject*>(this) );
@@ -257,7 +256,7 @@ void SAL_CALL BaseContainerControl::removeControl ( const Reference< XControl >
for ( size_t n = 0; n < nControls; n++ )
{
// Search for right control
- IMPL_ControlInfo* pControl = maControlInfoList[ n ];
+ IMPL_ControlInfo* pControl = maControlInfoList[ n ].get();
if ( rControl == pControl->xControl )
{
//.is it found ... remove listener from control
@@ -265,10 +264,7 @@ void SAL_CALL BaseContainerControl::removeControl ( const Reference< XControl >
pControl->xControl->setContext ( Reference< XInterface > () );
// ... free memory
- delete pControl;
- ::std::vector<IMPL_ControlInfo*>::iterator itr = maControlInfoList.begin();
- ::std::advance(itr, n);
- maControlInfoList.erase(itr);
+ maControlInfoList.erase(maControlInfoList.begin() + n);
// Send message to all other listener
OInterfaceContainerHelper * pInterfaceContainer = m_aListeners.getContainer( cppu::UnoType<XContainerListener>::get());
@@ -319,7 +315,7 @@ Reference< XControl > SAL_CALL BaseContainerControl::getControl ( const OUString
// Search for right control
for( size_t nCount = 0; nCount < nControls; ++nCount )
{
- IMPL_ControlInfo* pSearchControl = maControlInfoList[ nCount ];
+ IMPL_ControlInfo* pSearchControl = maControlInfoList[ nCount ].get();
if ( pSearchControl->sName == rName )
{
@@ -348,7 +344,7 @@ Sequence< Reference< XControl > > SAL_CALL BaseContainerControl::getControls ()
// Copy controls to sequence
for( nCount = 0; nCount < nControls; ++nCount )
{
- IMPL_ControlInfo* pCopyControl = maControlInfoList[ nCount ];
+ IMPL_ControlInfo* pCopyControl = maControlInfoList[ nCount ].get();
pDestination [ nCount ] = pCopyControl->xControl;
}
@@ -414,29 +410,6 @@ void BaseContainerControl::impl_activateTabControllers ()
}
}
-// private method
-
-void BaseContainerControl::impl_cleanMemory ()
-{
- // Get count of listitems.
- size_t nMaxCount = maControlInfoList.size();
- size_t nCount = 0;
-
- // Delete all items.
- for ( nCount = 0; nCount < nMaxCount; ++nCount )
- {
- // Delete every time first element of list!
- // We count from 0 to MAX, where "MAX=count of items" BEFORE we delete some elements!
- // If we use "GetObject ( nCount )" ... it can be, that we have an index greater then count of current elements!
-
- IMPL_ControlInfo* pSearchControl = maControlInfoList[ nCount ];
- delete pSearchControl;
- }
-
- // Delete list himself.
- maControlInfoList.clear ();
-}
-
} // namespace unocontrols
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */