summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svl/lstner.hxx4
-rw-r--r--svl/source/notify/lstner.cxx20
2 files changed, 11 insertions, 13 deletions
diff --git a/include/svl/lstner.hxx b/include/svl/lstner.hxx
index 9cc753307695..8bf93b93a7b8 100644
--- a/include/svl/lstner.hxx
+++ b/include/svl/lstner.hxx
@@ -47,8 +47,8 @@ public:
SfxListener( const SfxListener &rCopy );
virtual ~SfxListener();
- bool StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDups = false );
- bool EndListening( SfxBroadcaster& rBroadcaster, bool bAllDups = false );
+ void StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDups = false );
+ void EndListening( SfxBroadcaster& rBroadcaster, bool bAllDups = false );
void EndListeningAll();
bool IsListening( SfxBroadcaster& rBroadcaster ) const;
diff --git a/svl/source/notify/lstner.cxx b/svl/source/notify/lstner.cxx
index 606b9a609c10..331f60017b9b 100644
--- a/svl/source/notify/lstner.cxx
+++ b/svl/source/notify/lstner.cxx
@@ -65,7 +65,7 @@ void SfxListener::RemoveBroadcaster_Impl( SfxBroadcaster& rBroadcaster )
// registers a specific SfxBroadcaster
-bool SfxListener::StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDups )
+void SfxListener::StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDups )
{
if ( !bPreventDups || !IsListening( rBroadcaster ) )
{
@@ -73,27 +73,25 @@ bool SfxListener::StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDup
aBCs.push_back( &rBroadcaster );
DBG_ASSERT( IsListening(rBroadcaster), "StartListening failed" );
- return true;
}
-
- return false;
}
// unregisters a specific SfxBroadcaster
-bool SfxListener::EndListening( SfxBroadcaster& rBroadcaster, bool bAllDups )
+void SfxListener::EndListening( SfxBroadcaster& rBroadcaster, bool bAllDups )
{
- if ( !IsListening( rBroadcaster ) )
- return false;
-
do
{
+ SfxBroadcasterArr_Impl::iterator it = std::find( aBCs.begin(), aBCs.end(), &rBroadcaster );
+ if ( it == aBCs.end() )
+ {
+ break;
+ }
rBroadcaster.RemoveListener(*this);
- aBCs.erase( std::find( aBCs.begin(), aBCs.end(), &rBroadcaster ) );
+ aBCs.erase( it );
}
- while ( bAllDups && IsListening( rBroadcaster ) );
- return true;
+ while ( bAllDups );
}