diff options
Diffstat (limited to 'sc/workben/result.cxx')
-rw-r--r-- | sc/workben/result.cxx | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/sc/workben/result.cxx b/sc/workben/result.cxx index 122c2c876433..0548630af8e5 100644 --- a/sc/workben/result.cxx +++ b/sc/workben/result.cxx @@ -23,7 +23,6 @@ using namespace com::sun::star; -SV_IMPL_PTRARR( XResultListenerArr_Impl, css::uno::Reference< css::sheet::XResultListener >* ); ScAddInResult::ScAddInResult(const String& rStr) : aArg( rStr ), @@ -46,8 +45,8 @@ void ScAddInResult::NewValue() sheet::ResultEvent aEvent( (cppu::OWeakObject*)this, aAny ); - for ( sal_uInt16 n=0; n<aListeners.Count(); n++ ) - (*aListeners[n])->modified( aEvent ); + for (size_t n = 0; n < m_Listeners.size(); ++n) + m_Listeners[n]->modified( aEvent ); } IMPL_LINK_TYPED( ScAddInResult, TimeoutHdl, Timer*, pT, void ) @@ -64,10 +63,9 @@ ScAddInResult::~ScAddInResult() void SAL_CALL ScAddInResult::addResultListener( const css::uno::Reference< css::sheet::XResultListener >& aListener ) throw(css::uno::RuntimeException) { - uno::Reference<sheet::XResultListener> *pObj = new uno::Reference<sheet::XResultListener>( aListener ); - aListeners.Insert( pObj, aListeners.Count() ); + m_Listeners.push_back(uno::Reference<sheet::XResultListener>(aListener)); - if ( aListeners.Count() == 1 ) + if (m_Listeners.size() == 1) { acquire(); // one Ref for all listeners @@ -79,15 +77,13 @@ void SAL_CALL ScAddInResult::removeResultListener( const css::uno::Reference< cs { acquire(); - sal_uInt16 nCount = aListeners.Count(); - for ( sal_uInt16 n=nCount; n--; ) + for (size_t n = m_Listeners.size(); --n; ) { - uno::Reference<sheet::XResultListener> *pObj = aListeners[n]; - if ( *pObj == aListener ) + if (m_Listeners[n] == aListener) { - aListeners.DeleteAndDestroy( n ); + m_Listeners.erase(m_Listeners.begin() + n); - if ( aListeners.Count() == 0 ) + if (m_Listeners.empty()) { nTickCount = 0; //! Test |