X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Feventmanager.cpp;h=7303ea5af55fcbb874ab82f0dcf676de4801fba4;hp=6c539e72c660188b6962ed48cf371c52352e7043;hb=e49f87a6227dc6f82c17126a886cfc83ccf5e3ed;hpb=5e9a649d94d1832e0b4f3f296e8a2df2d8741d9b diff --git a/src/common/eventmanager.cpp b/src/common/eventmanager.cpp index 6c539e72..7303ea5a 100644 --- a/src/common/eventmanager.cpp +++ b/src/common/eventmanager.cpp @@ -116,13 +116,13 @@ void EventManager::registerObject(QObject *object, Priority priority, const QStr if(eventType > 0) { Handler handler(object, i, priority); registeredHandlers()[eventType].append(handler); - qDebug() << "Registered event handler for" << methodSignature << "in" << object; + //qDebug() << "Registered event handler for" << methodSignature << "in" << object; } eventType = findEventType(methodSignature, filterPrefix); if(eventType > 0) { Handler handler(object, i, priority); registeredFilters()[eventType].append(handler); - qDebug() << "Registered event filterer for" << methodSignature << "in" << object; + //qDebug() << "Registered event filterer for" << methodSignature << "in" << object; } } } @@ -218,19 +218,20 @@ void EventManager::dispatchEvent(Event *event) { } // now dispatch the event - QList::const_iterator it = handlers.begin(); - while(it != handlers.end() && !event->isStopped()) { + QList::const_iterator it; + for(it = handlers.begin(); it != handlers.end() && !event->isStopped(); ++it) { QObject *obj = it->object; if(ignored.contains(obj)) // we only deliver an event once to any given object continue; + ignored.insert(obj); + if(filters.contains(obj)) { // we have a filter, so let's check if we want to deliver the event Handler filter = filters.value(obj); bool result = false; void *param[] = {Q_RETURN_ARG(bool, result).data(), Q_ARG(Event *, event).data() }; obj->qt_metacall(QMetaObject::InvokeMetaMethod, filter.methodIndex, param); - ignored.insert(obj); // don't try to deliver the event again either way if(!result) continue; // mmmh, event filter told us to not accept } @@ -238,8 +239,6 @@ void EventManager::dispatchEvent(Event *event) { // finally, deliverance! void *param[] = {0, Q_ARG(Event *, event).data() }; obj->qt_metacall(QMetaObject::InvokeMetaMethod, it->methodIndex, param); - - ++it; } // that's it