diff --git a/bec_widgets/widgets/plots/image/toolbar_components/device_selection.py b/bec_widgets/widgets/plots/image/toolbar_components/device_selection.py index 212367f5..41e44d80 100644 --- a/bec_widgets/widgets/plots/image/toolbar_components/device_selection.py +++ b/bec_widgets/widgets/plots/image/toolbar_components/device_selection.py @@ -5,6 +5,9 @@ from bec_widgets.utils.toolbars.bundles import ToolbarBundle, ToolbarComponents from bec_widgets.utils.toolbars.connections import BundleConnection from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import DeviceComboBox from bec_widgets.widgets.control.device_input.signal_combobox.signal_combobox import SignalComboBox +from bec_lib.logger import bec_logger + +logger = bec_logger.logger class DeviceSelection(QWidget): @@ -139,18 +142,12 @@ class DeviceSelection(QWidget): def cleanup(self): """Clean up the widget resources.""" + logger.error("Cleaning up DeviceSelection") if self._cleanup_done: return self._cleanup_done = True self.device_combo_box.close() - self.device_combo_box.deleteLater() self.signal_combo_box.close() - self.signal_combo_box.deleteLater() - - def closeEvent(self, event): - """Ensure embedded BEC widgets clean up when the toolbar widget closes.""" - self.cleanup() - super().closeEvent(event) def device_selection_bundle(components: ToolbarComponents, client=None) -> ToolbarBundle: diff --git a/tests/unit_tests/test_image_view_next_gen.py b/tests/unit_tests/test_image_view_next_gen.py index 77b003bd..495fc152 100644 --- a/tests/unit_tests/test_image_view_next_gen.py +++ b/tests/unit_tests/test_image_view_next_gen.py @@ -35,6 +35,17 @@ def test_initialization_defaults(qtbot, mocked_client): assert bec_image_view._color_bar is None +def test_image_cleanup_cleans_toolbar_device_selection_callbacks(qtbot, mocked_client): + bec_image_view = create_widget(qtbot, Image, client=mocked_client) + device_selection = bec_image_view.toolbar.components.get_action("device_selection").widget + + bec_image_view.cleanup() + + assert device_selection._cleanup_done is True + assert device_selection.device_combo_box._callback_id is None + assert device_selection.signal_combo_box._device_update_register is None + + def test_setting_color_map(qtbot, mocked_client): bec_image_view = create_widget(qtbot, Image, client=mocked_client) bec_image_view.color_map = "viridis"