diff --git a/bec_widgets/widgets/plots/image/image.py b/bec_widgets/widgets/plots/image/image.py index 89b25268..0b5dd483 100644 --- a/bec_widgets/widgets/plots/image/image.py +++ b/bec_widgets/widgets/plots/image/image.py @@ -1068,8 +1068,7 @@ class Image(ImageBase): except Exception: # noqa: BLE001 pass - self.bec_dispatcher.disconnect_slot(self.on_scan_status, MessageEndpoints.scan_status()) - self.bec_dispatcher.disconnect_slot(self.on_scan_progress, MessageEndpoints.scan_progress()) + # Dispatcher slots are released by BECWidget.cleanup via disconnect_owner. super().cleanup() diff --git a/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py b/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py index dcd90598..731674e6 100644 --- a/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +++ b/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py @@ -740,8 +740,7 @@ class ScatterWaveform(PlotBase): self.scatter_dialog.deleteLater() if self.scatter_curve_settings is not None: self.scatter_curve_settings.cleanup() - self.bec_dispatcher.disconnect_slot(self.on_scan_status, MessageEndpoints.scan_status()) - self.bec_dispatcher.disconnect_slot(self.on_scan_progress, MessageEndpoints.scan_progress()) + # Dispatcher slots are released by BECWidget.cleanup via disconnect_owner. self.plot_item.removeItem(self._main_curve) self._main_curve = None super().cleanup() diff --git a/bec_widgets/widgets/progress/ring_progress_bar/ring.py b/bec_widgets/widgets/progress/ring_progress_bar/ring.py index 25af3d57..f22edad3 100644 --- a/bec_widgets/widgets/progress/ring_progress_bar/ring.py +++ b/bec_widgets/widgets/progress/ring_progress_bar/ring.py @@ -639,11 +639,10 @@ class Ring(BECWidget, QWidget): def cleanup(self): """ Cleanup the ring widget. - Disconnect any registered slots. """ - if self.registered_slot is not None: - self.bec_dispatcher.disconnect_slot(*self.registered_slot) - self.registered_slot = None + # Dispatcher slots are released by BECWidget.cleanup via disconnect_owner; + # no per-widget disconnect is needed at teardown. + self.registered_slot = None self.progress_tracker.cleanup() self._hover_animation.stop() super().cleanup()