summaryrefslogtreecommitdiff
path: root/sd/source/ui/tools/EventMultiplexer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/tools/EventMultiplexer.cxx')
-rw-r--r--sd/source/ui/tools/EventMultiplexer.cxx59
1 files changed, 18 insertions, 41 deletions
diff --git a/sd/source/ui/tools/EventMultiplexer.cxx b/sd/source/ui/tools/EventMultiplexer.cxx
index 924a5e91e6a9..5442c40fe40b 100644
--- a/sd/source/ui/tools/EventMultiplexer.cxx
+++ b/sd/source/ui/tools/EventMultiplexer.cxx
@@ -68,12 +68,10 @@ public:
virtual ~Implementation() override;
void AddEventListener (
- const Link<EventMultiplexerEvent&,void>& rCallback,
- EventMultiplexerEventId aEventTypes);
+ const Link<EventMultiplexerEvent&,void>& rCallback);
void RemoveEventListener (
- const Link<EventMultiplexerEvent&,void>& rCallback,
- EventMultiplexerEventId aEventTypes);
+ const Link<EventMultiplexerEvent&,void>& rCallback);
void CallListeners (EventMultiplexerEvent& rEvent);
@@ -118,8 +116,7 @@ protected:
private:
ViewShellBase& mrBase;
- typedef ::std::pair<Link<EventMultiplexerEvent&,void>,EventMultiplexerEventId> ListenerDescriptor;
- typedef ::std::vector<ListenerDescriptor> ListenerList;
+ typedef ::std::vector<Link<EventMultiplexerEvent&,void>> ListenerList;
ListenerList maListeners;
/// Remember whether we are listening to the UNO controller.
@@ -170,17 +167,15 @@ EventMultiplexer::~EventMultiplexer()
}
void EventMultiplexer::AddEventListener (
- const Link<EventMultiplexerEvent&,void>& rCallback,
- EventMultiplexerEventId aEventTypes)
+ const Link<EventMultiplexerEvent&,void>& rCallback)
{
- mpImpl->AddEventListener (rCallback, aEventTypes);
+ mpImpl->AddEventListener(rCallback);
}
void EventMultiplexer::RemoveEventListener (
- const Link<EventMultiplexerEvent&,void>& rCallback,
- EventMultiplexerEventId aEventTypes)
+ const Link<EventMultiplexerEvent&,void>& rCallback)
{
- mpImpl->RemoveEventListener (rCallback, aEventTypes);
+ mpImpl->RemoveEventListener(rCallback);
}
void EventMultiplexer::MultiplexEvent(
@@ -300,42 +295,25 @@ void EventMultiplexer::Implementation::ReleaseListeners()
}
void EventMultiplexer::Implementation::AddEventListener (
- const Link<EventMultiplexerEvent&,void>& rCallback,
- EventMultiplexerEventId aEventTypes)
+ const Link<EventMultiplexerEvent&,void>& rCallback)
{
- ListenerList::iterator iListener (maListeners.begin());
- ListenerList::const_iterator iEnd (maListeners.end());
- for (;iListener!=iEnd; ++iListener)
- if (iListener->first == rCallback)
- break;
- if (iListener != maListeners.end())
- {
- // Listener exists. Update its event type set.
- iListener->second |= aEventTypes;
- }
- else
- {
- maListeners.push_back (ListenerDescriptor(rCallback,aEventTypes));
- }
+ for (auto const & i : maListeners)
+ if (i == rCallback)
+ return;
+ maListeners.push_back(rCallback);
}
void EventMultiplexer::Implementation::RemoveEventListener (
- const Link<EventMultiplexerEvent&,void>& rCallback,
- EventMultiplexerEventId aEventTypes)
+ const Link<EventMultiplexerEvent&,void>& rCallback)
{
ListenerList::iterator iListener (maListeners.begin());
ListenerList::const_iterator iEnd (maListeners.end());
for (;iListener!=iEnd; ++iListener)
- if (iListener->first == rCallback)
+ if (*iListener == rCallback)
+ {
+ maListeners.erase(iListener);
break;
- if (iListener != maListeners.end())
- {
- // Update the event type set.
- iListener->second &= ~aEventTypes;
- // When no events remain in the set then remove the listener.
- if (iListener->second == EventMultiplexerEventId::NONE)
- maListeners.erase (iListener);
- }
+ }
}
void EventMultiplexer::Implementation::ConnectToController()
@@ -675,8 +653,7 @@ void EventMultiplexer::Implementation::CallListeners (EventMultiplexerEvent& rEv
ListenerList::const_iterator iListenerEnd (aCopyListeners.end());
for (; iListener!=iListenerEnd; ++iListener)
{
- if (iListener->second & rEvent.meEventId)
- iListener->first.Call(rEvent);
+ iListener->Call(rEvent);
}
}