diff --git a/cura/Settings/PerObjectContainerStack.py b/cura/Settings/PerObjectContainerStack.py index 6c54ed46d5..33111cbed7 100644 --- a/cura/Settings/PerObjectContainerStack.py +++ b/cura/Settings/PerObjectContainerStack.py @@ -3,13 +3,14 @@ from typing import Any, Optional from UM.Application import Application from UM.Decorators import override from UM.Settings.Interfaces import PropertyEvaluationContext -from UM.Settings.ContainerStack import ContainerStack from UM.Settings.SettingInstance import InstanceState +from .CuraContainerStack import CuraContainerStack -class PerObjectContainerStack(ContainerStack): - @override(ContainerStack) +class PerObjectContainerStack(CuraContainerStack): + + @override(CuraContainerStack) def getProperty(self, key: str, property_name: str, context: Optional[PropertyEvaluationContext] = None) -> Any: if context is None: context = PropertyEvaluationContext() @@ -51,8 +52,8 @@ class PerObjectContainerStack(ContainerStack): context.popContainer() return result - @override(ContainerStack) - def setNextStack(self, stack: ContainerStack): + @override(CuraContainerStack) + def setNextStack(self, stack: CuraContainerStack): super().setNextStack(stack) # trigger signal to re-evaluate all default settings diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index d7ae43f938..e853a3a979 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -3,7 +3,6 @@ import copy -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Scene.SceneNodeDecorator import SceneNodeDecorator from UM.Signal import Signal, signalemitter from UM.Settings.InstanceContainer import InstanceContainer @@ -33,9 +32,11 @@ class SettingOverrideDecorator(SceneNodeDecorator): def __init__(self): super().__init__() - self._stack = PerObjectContainerStack(stack_id = "per_object_stack_" + str(id(self))) + self._stack = PerObjectContainerStack(container_id = "per_object_stack_" + str(id(self))) self._stack.setDirty(False) # This stack does not need to be saved. - self._stack.addContainer(InstanceContainer(container_id = "SettingOverrideInstanceContainer")) + user_container = InstanceContainer(container_id = "SettingOverrideInstanceContainer") + user_container.addMetaDataEntry("type", "user") + self._stack.userChanges = user_container self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0).getId() self._is_non_printing_mesh = False