| 84 | |
| 85 | |
| 86 | void EventDispatcher::dispatchEvent(Event* evt) |
| 87 | { |
| 88 | DispatchGuard guard(_inDispatch); |
| 89 | EventListenerList::iterator it = _listeners.begin(); |
| 90 | while (it != _listeners.end()) |
| 91 | { |
| 92 | if (it->pListener && it->type == evt->type()) |
| 93 | { |
| 94 | it->pListener->handleEvent(evt); |
| 95 | } |
| 96 | if (!it->pListener) |
| 97 | { |
| 98 | EventListenerList::iterator del = it++; |
| 99 | _listeners.erase(del); |
| 100 | } |
| 101 | else ++it; |
| 102 | } |
| 103 | } |
| 104 | |
| 105 | |
| 106 | void EventDispatcher::captureEvent(Event* evt) |