24#include <com/sun/star/lang/XComponent.hpp>
26#include <osl/diagnose.h>
54 virtual void SAL_CALL
disposing(
const EventObject& _rSource )
override;
60 OSL_ENSURE(
m_pAdapter,
"OEventListenerImpl::OEventListenerImpl: invalid adapter!");
66 Reference< XEventListener > xMeMyselfAndI =
this;
67 _rxComp->addEventListener(xMeMyselfAndI);
97 std::vector< rtl::Reference<OEventListenerImpl> >
aListeners;
114 if (
m_pImpl->aListeners.empty() )
117 auto it =
m_pImpl->aListeners.begin();
121 if ((pListenerImpl->getComponent().get() == _rxComp.get()) || (pListenerImpl->getComponent() == _rxComp))
123 pListenerImpl->dispose();
124 it =
m_pImpl->aListeners.erase( it );
129 while ( it !=
m_pImpl->aListeners.end() );
134 for (
const auto &
i :
m_pImpl->aListeners )
145 OSL_FAIL(
"OEventListenerAdapter::startComponentListening: invalid component!");
150 m_pImpl->aListeners.emplace_back(pListenerImpl);
base class for non-UNO dispose listeners
void stopAllComponentListening()
virtual ~OEventListenerAdapter()
void startComponentListening(const css::uno::Reference< css::lang::XComponent > &_rxComp)
std::unique_ptr< OEventListenerAdapterImpl > m_pImpl
virtual void _disposing(const css::lang::EventObject &_rSource)=0
void stopComponentListening(const css::uno::Reference< css::lang::XComponent > &_rxComp)
friend class OEventListenerImpl
Reference< XEventListener > m_xKeepMeAlive
const Reference< XComponent > & getComponent() const
Reference< XComponent > m_xComponent
OEventListenerImpl(OEventListenerAdapter *_pAdapter, const Reference< XComponent > &_rxComp)
OEventListenerAdapter * m_pAdapter
virtual void SAL_CALL disposing(const EventObject &_rSource) override
std::vector< rtl::Reference< OEventListenerImpl > > aListeners