Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlovetox <philipp@hoerist.com>2022-08-13 18:41:19 +0300
committerlovetox <philipp@hoerist.com>2022-08-13 18:48:22 +0300
commitc90c33536b2e7c101eb76ce95fe18814e4230e79 (patch)
treeaf52fbe08584f4f735417a27fc04b964cbfb5c93
parent843b6f1dcb7fc543da00c03f51fdc5207b69a04e (diff)
refactor: GED: Prevent registering events multiple times
-rw-r--r--gajim/common/ged.py9
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)