From 5abb03e269bf4aedde03f8f93ce513eff5fdd710 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 19 Aug 2019 17:09:16 +0200 Subject: [PATCH] No longer update all material models when favourites change The MaterialManager.materialsUpdated signal was only called once upon init and for the rest when a favourite was added or removed. So only the FavoriteMaterialsModel would need to listen to it. Because the MaterialManager is being deprecated, the favourite materials model now just listens to the preferences changing instead, as it was supposed to be doing anyway. Contributes to issue CURA-6600. --- cura/Machines/Models/BaseMaterialsModel.py | 3 --- cura/Machines/Models/FavoriteMaterialsModel.py | 9 +++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index 97226b6bd6..ee869b17b8 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -34,9 +34,6 @@ class BaseMaterialsModel(ListModel): # Update this model when switching machines self._machine_manager.activeStackChanged.connect(self._update) - - # Update this model when list of materials changes - self._material_manager.materialsUpdated.connect(self._update) self.addRoleName(Qt.UserRole + 1, "root_material_id") self.addRoleName(Qt.UserRole + 2, "id") diff --git a/cura/Machines/Models/FavoriteMaterialsModel.py b/cura/Machines/Models/FavoriteMaterialsModel.py index 5f42a17f46..bab0809ee0 100644 --- a/cura/Machines/Models/FavoriteMaterialsModel.py +++ b/cura/Machines/Models/FavoriteMaterialsModel.py @@ -2,11 +2,20 @@ # Cura is released under the terms of the LGPLv3 or higher. from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel +import cura.CuraApplication # To listen to changes to the preferences. ## Model that shows the list of favorite materials. class FavoriteMaterialsModel(BaseMaterialsModel): def __init__(self, parent = None): super().__init__(parent) + cura.CuraApplication.CuraApplication.getInstance().getPreferences().preferenceChanged.connect(self._onFavoritesChanged) + self._update() + + ## Triggered when any preference changes, but only handles it when the list + # of favourites is changed. + def _onFavoritesChanged(self, preference_key: str) -> None: + if preference_key != "cura/favorite_materials": + return self._update() def _update(self):