diff --git a/bec_widgets/utils/bec_dispatcher.py b/bec_widgets/utils/bec_dispatcher.py index 9a93aa2a..4402ed98 100644 --- a/bec_widgets/utils/bec_dispatcher.py +++ b/bec_widgets/utils/bec_dispatcher.py @@ -162,9 +162,9 @@ class BECDispatcher: return self.client.connector.unregister(topics, cb=connected_slot) topics_str, _ = self.client.connector._convert_endpointinfo(topics) - self._slots[slot].difference_update(set(topics_str)) - if not self._slots[slot]: - del self._slots[slot] + self._slots[connected_slot].difference_update(set(topics_str)) + if not self._slots[connected_slot]: + del self._slots[connected_slot] def disconnect_topics(self, topics: Union[str, list]): self.client.connector.unregister(topics) diff --git a/tests/unit_tests/test_bec_dispatcher.py b/tests/unit_tests/test_bec_dispatcher.py index b24add04..bff12808 100644 --- a/tests/unit_tests/test_bec_dispatcher.py +++ b/tests/unit_tests/test_bec_dispatcher.py @@ -92,7 +92,9 @@ def test_dispatcher_2_cb_same_topic(bec_dispatcher_w_connector, qtbot, send_msg_ bec_dispatcher.connect_slot(cb1, "topic1") bec_dispatcher.connect_slot(cb2, "topic1") assert len(bec_dispatcher.client.connector._topics_cb) == 1 + assert len(bec_dispatcher._slots) == 2 bec_dispatcher.disconnect_slot(cb1, "topic1") + assert len(bec_dispatcher._slots) == 1 send_msg_event.set() qtbot.wait(10)