summaryrefslogtreecommitdiff
path: root/unoxml/source/events/eventdispatcher.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'unoxml/source/events/eventdispatcher.cxx')
-rw-r--r--unoxml/source/events/eventdispatcher.cxx83
1 files changed, 42 insertions, 41 deletions
diff --git a/unoxml/source/events/eventdispatcher.cxx b/unoxml/source/events/eventdispatcher.cxx
index ef07dff5ad2d..cc5fb159d3c8 100644
--- a/unoxml/source/events/eventdispatcher.cxx
+++ b/unoxml/source/events/eventdispatcher.cxx
@@ -60,20 +60,21 @@ namespace DOM::events {
// get the multimap for the specified type
auto tIter = pTMap->find(aType);
- if (tIter != pTMap->end()) {
- ListenerMap & rMap = tIter->second;
- // find listeners of specified type for specified node
- ListenerMap::iterator iter = rMap.find(pNode);
- while (iter != rMap.end() && iter->first == pNode)
+ if (tIter == pTMap->end())
+ return;
+
+ ListenerMap & rMap = tIter->second;
+ // find listeners of specified type for specified node
+ ListenerMap::iterator iter = rMap.find(pNode);
+ while (iter != rMap.end() && iter->first == pNode)
+ {
+ // erase all references to specified listener
+ if (iter->second.is() && iter->second == aListener)
{
- // erase all references to specified listener
- if (iter->second.is() && iter->second == aListener)
- {
- iter = rMap.erase(iter);
- }
- else
- ++iter;
+ iter = rMap.erase(iter);
}
+ else
+ ++iter;
}
}
@@ -210,38 +211,38 @@ namespace DOM::events {
// start at the root
NodeVector_t::const_reverse_iterator rinode =
const_cast<NodeVector_t const&>(captureVector).rbegin();
- if (rinode != const_cast<NodeVector_t const&>(captureVector).rend())
+ if (rinode == const_cast<NodeVector_t const&>(captureVector).rend())
+ return;
+
+ // capturing phase:
+ pEvent->m_phase = PhaseType_CAPTURING_PHASE;
+ while (rinode !=
+ const_cast<NodeVector_t const&>(captureVector).rend())
{
- // capturing phase:
- pEvent->m_phase = PhaseType_CAPTURING_PHASE;
- while (rinode !=
- const_cast<NodeVector_t const&>(captureVector).rend())
+ pEvent->m_currentTarget = rinode->first;
+ callListeners(captureListeners, rinode->second, aType, xEvent);
+ if (pEvent->m_canceled) return;
+ ++rinode;
+ }
+
+ NodeVector_t::const_iterator inode = captureVector.begin();
+
+ // target phase
+ pEvent->m_phase = PhaseType_AT_TARGET;
+ pEvent->m_currentTarget = inode->first;
+ callListeners(targetListeners, inode->second, aType, xEvent);
+ if (pEvent->m_canceled) return;
+ // bubbeling phase
+ ++inode;
+ if (i_xEvent->getBubbles()) {
+ pEvent->m_phase = PhaseType_BUBBLING_PHASE;
+ while (inode != captureVector.end())
{
- pEvent->m_currentTarget = rinode->first;
- callListeners(captureListeners, rinode->second, aType, xEvent);
+ pEvent->m_currentTarget = inode->first;
+ callListeners(targetListeners,
+ inode->second, aType, xEvent);
if (pEvent->m_canceled) return;
- ++rinode;
- }
-
- NodeVector_t::const_iterator inode = captureVector.begin();
-
- // target phase
- pEvent->m_phase = PhaseType_AT_TARGET;
- pEvent->m_currentTarget = inode->first;
- callListeners(targetListeners, inode->second, aType, xEvent);
- if (pEvent->m_canceled) return;
- // bubbeling phase
- ++inode;
- if (i_xEvent->getBubbles()) {
- pEvent->m_phase = PhaseType_BUBBLING_PHASE;
- while (inode != captureVector.end())
- {
- pEvent->m_currentTarget = inode->first;
- callListeners(targetListeners,
- inode->second, aType, xEvent);
- if (pEvent->m_canceled) return;
- ++inode;
- }
+ ++inode;
}
}
}