diff --git a/actions/cores/base_core/base_core.py b/actions/cores/base_core/base_core.py index 5c6a421..2b42d10 100644 --- a/actions/cores/base_core/base_core.py +++ b/actions/cores/base_core/base_core.py @@ -117,7 +117,11 @@ def on_change_domain(self, _, domain, old_domain): if entity and self.track_entity: self.plugin_base.backend.remove_tracked_entity(entity, self.refresh) self.settings.reset(domain) + # save entities from the combo to a temporary variable to keep them alive while we clear the combo + _temp_keep_alive = [self.entity_combo.get_item(i) for i in range(self.entity_combo.get_n_items())] self.entity_combo.remove_all_items() + # now the entities can be removed + del _temp_keep_alive self._last_loaded_entities = None if domain: diff --git a/test/actions/cores/base_core/test_base_core_on_change_domain.py b/test/actions/cores/base_core/test_base_core_on_change_domain.py index 8e34a95..faff3a6 100644 --- a/test/actions/cores/base_core/test_base_core_on_change_domain.py +++ b/test/actions/cores/base_core/test_base_core_on_change_domain.py @@ -58,6 +58,7 @@ def test_on_change_domain_no_entity(self, set_enabled_disabled_mock, load_entiti entity_combo_mock = Mock() entity_combo_mock.remove_all_items = remove_all_items_mock + entity_combo_mock.get_n_items = Mock(return_value=0) domain = "light" @@ -89,6 +90,7 @@ def test_on_change_domain_enity_not_tracked(self, set_enabled_disabled_mock, loa entity_combo_mock = Mock() entity_combo_mock.remove_all_items = remove_all_items_mock + entity_combo_mock.get_n_items = Mock(return_value=0) domain = "light" @@ -120,6 +122,7 @@ def test_on_change_domain_no_new_domain(self, set_enabled_disabled_mock, load_en entity_combo_mock = Mock() entity_combo_mock.remove_all_items = remove_all_items_mock + entity_combo_mock.get_n_items = Mock(return_value=0) domain = None @@ -151,6 +154,7 @@ def test_on_change_domain_success(self, set_enabled_disabled_mock, load_entities entity_combo_mock = Mock() entity_combo_mock.remove_all_items = remove_all_items_mock + entity_combo_mock.get_n_items = Mock(return_value=0) domain = "light" @@ -180,6 +184,7 @@ def test_on_change_domain_resets_entity_cache(self, set_enabled_disabled_mock, l settings_mock.reset = Mock() entity_combo_mock = Mock() + entity_combo_mock.get_n_items = Mock(return_value=0) instance = BaseCore(Mock(), True) instance.initialized = True