diff options
author | lovetox <philipp@hoerist.com> | 2022-08-13 18:41:19 +0300 |
---|---|---|
committer | lovetox <philipp@hoerist.com> | 2022-08-13 18:48:22 +0300 |
commit | c90c33536b2e7c101eb76ce95fe18814e4230e79 (patch) | |
tree | af52fbe08584f4f735417a27fc04b964cbfb5c93 | |
parent | 843b6f1dcb7fc543da00c03f51fdc5207b69a04e (diff) |
refactor: GED: Prevent registering events multiple times
-rw-r--r-- | gajim/common/ged.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gajim/common/ged.py b/gajim/common/ged.py index cb943649b..76ba9dc25 100644 --- a/gajim/common/ged.py +++ b/gajim/common/ged.py @@ -57,6 +57,10 @@ class GlobalEventsDispatcher: if event_name in self.handlers: handlers_list = self.handlers[event_name] + if (priority, handler) in handlers_list: + # Don’t register same handler/prio multiple times + return + i = 0 for i, handler_tuple in enumerate(handlers_list): if priority < handler_tuple[0]: @@ -122,11 +126,16 @@ class EventHelper: priority: int, handler: HandlerFuncT) -> None: + if (event_name, priority, handler) in self.__event_handlers: + return + self.__event_handlers.append((event_name, priority, handler)) app.ged.register_event_handler(event_name, priority, handler) def register_events(self, events: list[EventHandlerT]) -> None: for handler in events: + if handler in self.__event_handlers: + continue self.__event_handlers.append(handler) app.ged.register_event_handler(*handler) |