Browse Source

Ensure that all updates from settingInheritance are on a timer

Jaime van Kessel 5 years ago
parent
commit
be0e1f7284
1 changed files with 7 additions and 6 deletions
  1. 7 6
      cura/Settings/SettingInheritanceManager.py

+ 7 - 6
cura/Settings/SettingInheritanceManager.py

@@ -28,20 +28,21 @@ if TYPE_CHECKING:
 class SettingInheritanceManager(QObject):
     def __init__(self, parent = None) -> None:
         super().__init__(parent)
-        Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
+
         self._global_container_stack = None  # type: Optional[ContainerStack]
         self._settings_with_inheritance_warning = []  # type: List[str]
         self._active_container_stack = None  # type: Optional[ExtruderStack]
-        self._onGlobalContainerChanged()
-
-        ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged)
-        self._onActiveExtruderChanged()
 
         self._update_timer = QTimer()
         self._update_timer.setInterval(500)
         self._update_timer.setSingleShot(True)
         self._update_timer.timeout.connect(self._update)
 
+        Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
+        ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged)
+        self._onGlobalContainerChanged()
+        self._onActiveExtruderChanged()
+
     settingsWithIntheritanceChanged = pyqtSignal()
 
     ##  Get the keys of all children settings with an override.
@@ -106,7 +107,7 @@ class SettingInheritanceManager(QObject):
             if self._active_container_stack is not None:
                 self._active_container_stack.propertyChanged.connect(self._onPropertyChanged)
                 self._active_container_stack.containersChanged.connect(self._onContainersChanged)
-            self._update()  # Ensure that the settings_with_inheritance_warning list is populated.
+            self._update_timer.start()  # Ensure that the settings_with_inheritance_warning list is populated.
 
     def _onPropertyChanged(self, key: str, property_name: str) -> None:
         if (property_name == "value" or property_name == "enabled") and self._global_container_stack: