diff --git a/cura/Settings/SettingInheritanceManager.py b/cura/Settings/SettingInheritanceManager.py index 6179e76ab7..34dfaeb616 100644 --- a/cura/Settings/SettingInheritanceManager.py +++ b/cura/Settings/SettingInheritanceManager.py @@ -61,6 +61,10 @@ class SettingInheritanceManager(QObject): result.append(key) return result + @pyqtSlot(str, str, result = bool) + def hasOverrides(self, key: str, extruder_index: str): + return key in self.getOverridesForExtruder(key, extruder_index) + @pyqtSlot(str, str, result = "QStringList") def getOverridesForExtruder(self, key: str, extruder_index: str) -> List[str]: if self._global_container_stack is None: diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 98a1601b48..0470e91faa 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -269,7 +269,7 @@ Item } // If the setting does not have a limit_to_extruder property (or is -1), use the active stack. - if (globalPropertyProvider.properties.limit_to_extruder === null || String(globalPropertyProvider.properties.limit_to_extruder) === "-1") + if (globalPropertyProvider.properties.limit_to_extruder === null || globalPropertyProvider.properties.limit_to_extruder === "-1") { return Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0 } @@ -283,7 +283,7 @@ Item { return false } - return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, String(globalPropertyProvider.properties.limit_to_extruder)).indexOf(definition.key) >= 0 + return Cura.SettingInheritanceManager.hasOverrides(definition.key, globalPropertyProvider.properties.limit_to_extruder) } anchors.top: parent.top diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 074946c6bd..cb96728973 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -302,7 +302,7 @@ Item { target: provider property: "containerStackId" - when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder !== null && inheritStackProvider.properties.limit_to_extruder >= 0); + when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder !== undefined && inheritStackProvider.properties.limit_to_extruder >= 0); value: { // Associate this binding with Cura.MachineManager.activeMachine.id in the beginning so this @@ -315,10 +315,10 @@ Item //Not settable per extruder or there only is global, so we must pick global. return contents.activeMachineId } - if (inheritStackProvider.properties.limit_to_extruder !== null && inheritStackProvider.properties.limit_to_extruder >= 0) + if (inheritStackProvider.properties.limit_to_extruder !== undefined && inheritStackProvider.properties.limit_to_extruder >= 0) { //We have limit_to_extruder, so pick that stack. - return Cura.ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; + return Cura.ExtruderManager.extruderIds[inheritStackProvider.properties.limit_to_extruder]; } if (Cura.ExtruderManager.activeExtruderStackId) {