Skip to content

Commit

Permalink
Force extruder position to stick during retrieval of property.
Browse files Browse the repository at this point in the history
Otherwise other parts of the stack(s) could have another value for limit-to-extruder, depending on if the user updates the chosen extruder (for example for support) quickly enough that we're in the middle of the operation. (Locking would probably more complicated, since we not only need a recurrent lock, but a lock on a few but not all classes based on a method call....)

CURA-12223
  • Loading branch information
rburema committed Nov 12, 2024
1 parent d59e65f commit f498045
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions cura/Settings/ExtruderStack.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2018 Ultimaker B.V.
# Copyright (c) 2024 UltiMaker
# Cura is released under the terms of the LGPLv3 or higher.

from typing import Any, Dict, TYPE_CHECKING, Optional
Expand All @@ -12,11 +12,8 @@
from UM.Settings.Interfaces import ContainerInterface, PropertyEvaluationContext
from UM.Util import parseBool

import cura.CuraApplication

from . import Exceptions
from .CuraContainerStack import CuraContainerStack, _ContainerIndexes
from .ExtruderManager import ExtruderManager

if TYPE_CHECKING:
from cura.Settings.GlobalStack import GlobalStack
Expand Down Expand Up @@ -141,7 +138,11 @@ def getProperty(self, key: str, property_name: str, context: Optional[PropertyEv
context.popContainer()
return result

limit_to_extruder = super().getProperty(key, "limit_to_extruder", context)
if not context:
context = PropertyEvaluationContext(self)
if "extruder_position" not in context.context:
context.context["extruder_position"] = super().getProperty(key, "limit_to_extruder", context)
limit_to_extruder = context.context["extruder_position"]
if limit_to_extruder is not None:
limit_to_extruder = str(limit_to_extruder)

Expand Down

0 comments on commit f498045

Please sign in to comment.