Fix #3016. Drawing styles that set the shading style will change shading style upon activating the style.

This commit is contained in:
Dion Moult
2023-07-07 15:17:53 +10:00
parent 8896a74d1b
commit c45b28e78a
2 changed files with 14 additions and 7 deletions
@@ -389,7 +389,7 @@
"scene.display.shading.studiolight_background_blur": 0.0, "scene.display.shading.studiolight_background_blur": 0.0,
"scene.display.shading.studiolight_intensity": 0.0, "scene.display.shading.studiolight_intensity": 0.0,
"scene.display.shading.studiolight_rotate_z": 0.0, "scene.display.shading.studiolight_rotate_z": 0.0,
"scene.display.shading.type": "SOLID", "scene.display.shading.type": "RENDERED",
"scene.display.shading.use_compositor": "DISABLED", "scene.display.shading.use_compositor": "DISABLED",
"scene.display.shading.use_dof": false, "scene.display.shading.use_dof": false,
"scene.display.shading.use_scene_lights": false, "scene.display.shading.use_scene_lights": false,
@@ -640,7 +640,7 @@
"scene.display.shading.studiolight_background_blur": 0.0, "scene.display.shading.studiolight_background_blur": 0.0,
"scene.display.shading.studiolight_intensity": 0.0, "scene.display.shading.studiolight_intensity": 0.0,
"scene.display.shading.studiolight_rotate_z": 0.0, "scene.display.shading.studiolight_rotate_z": 0.0,
"scene.display.shading.type": "SOLID", "scene.display.shading.type": "RENDERED",
"scene.display.shading.use_compositor": "DISABLED", "scene.display.shading.use_compositor": "DISABLED",
"scene.display.shading.use_dof": false, "scene.display.shading.use_dof": false,
"scene.display.shading.use_scene_lights": false, "scene.display.shading.use_scene_lights": false,
@@ -752,4 +752,4 @@
"space.overlay.xray_alpha_bone": 0.0 "space.overlay.xray_alpha_bone": 0.0
} }
} }
} }
@@ -1633,10 +1633,17 @@ class ActivateDrawingStyle(bpy.types.Operator, Operator):
space = self.get_view_3d(context) # Do not remove. It is used in exec later space = self.get_view_3d(context) # Do not remove. It is used in exec later
style = json.loads(self.drawing_style.raster_style) style = json.loads(self.drawing_style.raster_style)
for path, value in style.items(): for path, value in style.items():
if isinstance(value, str): try:
exec(f"{path} = '{value}'") if isinstance(value, str):
else: exec(f"{path} = '{value}'")
exec(f"{path} = {value}") else:
exec(f"{path} = {value}")
except:
# Differences in Blender versions mean result in failures here
print("Failed to set shading style {path} to {value}")
shading_type = style.get("scene.display.shading.type", None)
if shading_type:
space.shading.type = shading_type
def set_query(self, context): def set_query(self, context):
self.include_global_ids = [] self.include_global_ids = []