From 94ccd4b04bfd447eb292853f0ab2eee292f7977d Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 8 Dec 2016 17:24:25 +0100 Subject: [PATCH] Solve material properties not being saved. CURA-2586 --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 0d2c1890e0..fa0d3d2b8c 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -39,7 +39,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer): if self.isReadOnly(): return if self.getMetaDataEntry(key, None) == value: - # Prevent loop caused by for loop. + # Prevent recursion caused by for loop. return super().setMetaDataEntry(key, value) @@ -69,6 +69,17 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer): for container in containers: container.setName(new_name) + ## Overridden from InstanceContainer, to set dirty to base file as well. + def setDirty(self, dirty): + super().setDirty(dirty) + base_file = self.getMetaDataEntry("base_file", None) + if base_file is not None and base_file != self._id: + containers = UM.Settings.ContainerRegistry.getInstance().findContainers(id=base_file) + if containers: + base_container = containers[0] + if not base_container.isReadOnly(): + base_container.setDirty(dirty) + ## Overridden from InstanceContainer # def setProperty(self, key, property_name, property_value, container = None): # if self.isReadOnly():