summaryrefslogtreecommitdiffstats
path: root/sd/source/ui/tools/EventMultiplexer.cxx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2016-12-12 11:00:47 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2016-12-12 09:45:03 +0000
commit69f6fbb5d0ad87c85e0236a7fece107b69eb8b8b (patch)
tree9c69a71582e38f39e99300f53cb8251358229912 /sd/source/ui/tools/EventMultiplexer.cxx
parentcoverity#1397053 Logically dead code (golden) (diff)
downloadcore-69f6fbb5d0ad87c85e0236a7fece107b69eb8b8b.tar.gz
core-69f6fbb5d0ad87c85e0236a7fece107b69eb8b8b.zip
tdf#104046 - Slides in the slide pane don't update in realtime
This appears to be a consequence of my change commit 942716fee138b68c2af9411384f402b5692a88b2 convert EID constants to typed_flags in that change I made a "fix": @@ -689,20 +687,20 @@ void EventMultiplexer::Implementation::CallListeners (EventMultiplexerEvent& rEv ListenerList::const_iterator iListenerEnd (aCopyListeners.end()); for (; iListener!=iListenerEnd; ++iListener) { - if ((iListener->second && rEvent.meEventId)) + if (iListener->second & rEvent.meEventId) iListener->first.Call(rEvent); } } which causes this bug. I should have noticed that my "fix" indicates that the event filtering part of this multiplexing code was never working, and since no-one has ever complained about, lets just remove all of this unnecessary complexity. Change-Id: Id71613d4fd5817ee1358705059e4ce63d57573ad Reviewed-on: https://gerrit.libreoffice.org/31894 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
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 fc9f3763f1cc..2f6d03123bdb 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);
}
}