# what to do
for evt_cls in _registrars[identifier]:
- evt = evt_cls.accept_with(target)
- if evt:
- evt.listen(fn, identifier, target, *args, **kw)
+ for tgt in evt_cls.accept_with(target):
+ tgt.events.listen(fn, identifier, tgt, *args, **kw)
break
class _DispatchMeta(type):
isinstance(target.events, type) and \
issubclass(target.events, cls)
):
- return target.events
+ return [target]
else:
- return None
+ return []
@classmethod
def listen(cls, fn, identifier, target):
else:
self.is_equal = compare_function
+ attr = getattr(class_, key)
for ext in util.to_list(extension or []):
- ext._adapt_listener(self, ext)
+ ext._adapt_listener(attr, ext)
if active_history:
events.active_history = True