From 117c467829c27833a8e0fbc555114aa243e4f468 Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Tue, 9 Jan 2018 09:39:15 +0100 Subject: [PATCH] Fix: Per mesh setting combobox did not save selected option CURA-4760 --- .../PerObjectSettingVisibilityHandler.py | 9 +++++++++ plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml | 2 ++ 2 files changed, 11 insertions(+) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py index badca13468..c7e4deaaa7 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py @@ -2,6 +2,7 @@ # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal +from UM.FlameProfiler import pyqtSlot from UM.Application import Application from UM.Settings.ContainerRegistry import ContainerRegistry @@ -21,6 +22,7 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand self._selected_object_id = None self._node = None self._stack = None + self._skip_setting = None def setSelectedObjectId(self, id): if id != self._selected_object_id: @@ -36,6 +38,10 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand def selectedObjectId(self): return self._selected_object_id + @pyqtSlot(str) + def setSkipSetting(self, setting_name): + self._skip_setting = setting_name + def setVisible(self, visible): if not self._node: return @@ -50,6 +56,9 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand # Remove all instances that are not in visibility list for instance in all_instances: + # exceptionally skip setting + if self._skip_setting is not None and self._skip_setting == instance.definition.key: + continue if instance.definition.key not in visible: settings.removeInstance(instance.definition.key) visibility_changed = True diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 5bdb6d4cb0..2b7b6cd541 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -324,6 +324,8 @@ Item { // force updating the model to sync it with addedSettingsModel if(visible) { + // Set skip setting, it will prevent from restting selected mesh_type + contents.model.visibilityHandler.setSkipSetting(meshTypeSelection.model.get(meshTypeSelection.currentIndex).type) listview.model.forceUpdate() } }