Fix: Per mesh setting combobox did not save selected option

CURA-4760
This commit is contained in:
Aleksei S 2018-01-09 09:39:15 +01:00
parent 0722465fb9
commit 117c467829
2 changed files with 11 additions and 0 deletions

View file

@ -2,6 +2,7 @@
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal
from UM.FlameProfiler import pyqtSlot
from UM.Application import Application from UM.Application import Application
from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerRegistry import ContainerRegistry
@ -21,6 +22,7 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand
self._selected_object_id = None self._selected_object_id = None
self._node = None self._node = None
self._stack = None self._stack = None
self._skip_setting = None
def setSelectedObjectId(self, id): def setSelectedObjectId(self, id):
if id != self._selected_object_id: if id != self._selected_object_id:
@ -36,6 +38,10 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand
def selectedObjectId(self): def selectedObjectId(self):
return self._selected_object_id return self._selected_object_id
@pyqtSlot(str)
def setSkipSetting(self, setting_name):
self._skip_setting = setting_name
def setVisible(self, visible): def setVisible(self, visible):
if not self._node: if not self._node:
return return
@ -50,6 +56,9 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand
# Remove all instances that are not in visibility list # Remove all instances that are not in visibility list
for instance in all_instances: 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: if instance.definition.key not in visible:
settings.removeInstance(instance.definition.key) settings.removeInstance(instance.definition.key)
visibility_changed = True visibility_changed = True

View file

@ -324,6 +324,8 @@ Item {
// force updating the model to sync it with addedSettingsModel // force updating the model to sync it with addedSettingsModel
if(visible) 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() listview.model.forceUpdate()
} }
} }