[Bf-blender-cvs] [345c6298e99] blender2.8: Object Mode: move to workspace struct
Campbell Barton
noreply at git.blender.org
Thu Feb 8 11:19:04 CET 2018
Commit: 345c6298e995ea618c34282ba6d7ab5af032f191
Author: Campbell Barton
Date: Thu Feb 8 21:14:26 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB345c6298e995ea618c34282ba6d7ab5af032f191
Object Mode: move to workspace struct
- Read-only access can often use EvaluationContext.object_mode
- Write access to go to WorkSpace.object_mode.
- Some TODO's remain (marked as "TODO/OBMODE")
- Add-ons will need updating
(context.active_object.mode -> context.workspace.object_mode)
- There will be small/medium issues that still need resolving
this does work on a basic level though.
See D3037
===================================================================
M intern/cycles/blender/blender_curves.cpp
M release/scripts/modules/bpy_extras/object_utils.py
M release/scripts/modules/keyingsets_utils.py
M release/scripts/startup/bl_operators/freestyle.py
M release/scripts/startup/bl_operators/mesh.py
M release/scripts/startup/bl_operators/object.py
M release/scripts/startup/bl_operators/object_quick_effects.py
M release/scripts/startup/bl_operators/uvcalc_lightmap.py
M release/scripts/startup/bl_operators/uvcalc_smart_project.py
M release/scripts/startup/bl_operators/view3d.py
M release/scripts/startup/bl_ui/properties_constraint.py
M release/scripts/startup/bl_ui/properties_data_bone.py
M release/scripts/startup/bl_ui/properties_data_mesh.py
M release/scripts/startup/bl_ui/properties_data_modifier.py
M release/scripts/startup/bl_ui/properties_material.py
M release/scripts/startup/bl_ui/space_image.py
M release/scripts/startup/bl_ui/space_info.py
M release/scripts/startup/bl_ui/space_view3d.py
M release/scripts/startup/bl_ui/space_view3d_toolbar.py
M release/scripts/startup/keyingsets_builtins.py
M source/blender/blenkernel/BKE_DerivedMesh.h
M source/blender/blenkernel/BKE_multires.h
M source/blender/blenkernel/BKE_object.h
M source/blender/blenkernel/BKE_paint.h
M source/blender/blenkernel/BKE_shrinkwrap.h
M source/blender/blenkernel/BKE_workspace.h
M source/blender/blenkernel/intern/cdderivedmesh.c
M source/blender/blenkernel/intern/context.c
M source/blender/blenkernel/intern/multires.c
M source/blender/blenkernel/intern/object.c
M source/blender/blenkernel/intern/paint.c
M source/blender/blenkernel/intern/particle.c
M source/blender/blenkernel/intern/scene.c
M source/blender/blenkernel/intern/shrinkwrap.c
M source/blender/blenkernel/intern/subsurf_ccg.c
M source/blender/blenkernel/intern/workspace.c
M source/blender/blenloader/intern/readfile.c
M source/blender/blenloader/intern/versioning_250.c
M source/blender/bmesh/intern/bmesh_mesh.c
M source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
M source/blender/editors/armature/armature_relations.c
M source/blender/editors/armature/pose_edit.c
M source/blender/editors/include/ED_image.h
M source/blender/editors/include/ED_info.h
M source/blender/editors/include/ED_object.h
M source/blender/editors/include/ED_screen.h
M source/blender/editors/interface/interface_handlers.c
M source/blender/editors/object/object_add.c
M source/blender/editors/object/object_bake.c
M source/blender/editors/object/object_bake_api.c
M source/blender/editors/object/object_edit.c
M source/blender/editors/object/object_modifier.c
M source/blender/editors/object/object_relations.c
M source/blender/editors/object/object_select.c
M source/blender/editors/physics/particle_edit.c
M source/blender/editors/physics/particle_object.c
M source/blender/editors/render/render_update.c
M source/blender/editors/screen/screen_edit.c
M source/blender/editors/screen/screen_ops.c
M source/blender/editors/screen/workspace_edit.c
M source/blender/editors/sculpt_paint/paint_hide.c
M source/blender/editors/sculpt_paint/paint_image.c
M source/blender/editors/sculpt_paint/paint_utils.c
M source/blender/editors/sculpt_paint/paint_vertex.c
M source/blender/editors/sculpt_paint/sculpt.c
M source/blender/editors/space_image/image_edit.c
M source/blender/editors/space_image/image_ops.c
M source/blender/editors/space_image/space_image.c
M source/blender/editors/space_info/info_stats.c
M source/blender/editors/space_time/space_time.c
M source/blender/editors/util/ed_util.c
M source/blender/makesdna/DNA_object_types.h
M source/blender/makesdna/DNA_workspace_types.h
M source/blender/makesrna/intern/rna_brush.c
M source/blender/makesrna/intern/rna_layer.c
M source/blender/makesrna/intern/rna_object.c
M source/blender/makesrna/intern/rna_object_force.c
M source/blender/makesrna/intern/rna_scene.c
M source/blender/makesrna/intern/rna_space.c
M source/blender/makesrna/intern/rna_texture.c
M source/blender/makesrna/intern/rna_userdef.c
M source/blender/makesrna/intern/rna_wm.c
M source/blender/makesrna/intern/rna_workspace.c
M source/blender/modifiers/intern/MOD_multires.c
M source/blender/modifiers/intern/MOD_shrinkwrap.c
M source/blender/windowmanager/WM_api.h
M source/blender/windowmanager/intern/wm_event_system.c
M source/blender/windowmanager/intern/wm_window.c
M source/blenderplayer/bad_level_call_stubs/stubs.c
===================================================================
diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index 1499390f1d5..5ed021aa1e4 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -894,7 +894,8 @@ void BlenderSync::sync_curves(Mesh *mesh,
/* obtain general settings */
const bool use_curves = scene->curve_system_manager->use_curves;
- if(!(use_curves && b_ob.mode() != b_ob.mode_PARTICLE_EDIT)) {
+ /* TODO/OBMODE, make cycles mode aware. */
+ if(!(use_curves /* && b_ob.mode() != b_ob.mode_PARTICLE_EDIT */ )) {
if(!motion)
mesh->compute_bounds();
return;
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index 04b3858bb0d..31938f3ad3e 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -119,6 +119,7 @@ def object_data_add(context, obdata, operator=None, name=None):
:return: the newly created object in the scene.
:rtype: :class:`bpy.types.Object`
"""
+ workspace = context.workspace
scene = context.scene
layer = context.view_layer
layer_collection = context.layer_collection
@@ -146,9 +147,9 @@ def object_data_add(context, obdata, operator=None, name=None):
# caused because entering edit-mode does not add a empty undo slot!
if context.user_preferences.edit.use_enter_edit_mode:
if not (obj_act and
- obj_act.mode == 'EDIT' and
- obj_act.type == obj_new.type):
-
+ obj_act.type == obj_new.type and
+ workspace.object_mode == 'EDIT'
+ ):
_obdata = bpy.data.meshes.new(name)
obj_act = bpy.data.objects.new(_obdata.name, _obdata)
obj_act.matrix_world = obj_new.matrix_world
@@ -159,7 +160,10 @@ def object_data_add(context, obdata, operator=None, name=None):
bpy.ops.ed.undo_push(message="Enter Editmode")
# XXX
- if obj_act and obj_act.mode == 'EDIT' and obj_act.type == obj_new.type:
+ if (obj_act and
+ obj_act.type == obj_new.type and
+ workspace.object_mode == 'EDIT'
+ ):
bpy.ops.mesh.select_all(action='DESELECT')
obj_act.select_set(action='SELECT')
bpy.ops.object.mode_set(mode='OBJECT')
@@ -249,9 +253,10 @@ def object_image_guess(obj, bm=None):
first checking the texture-faces, then the material.
"""
# TODO, cycles/nodes materials
+ workspace = context.workspace
me = obj.data
if bm is None:
- if obj.mode == 'EDIT':
+ if workspace.object_mode == 'EDIT':
import bmesh
bm = bmesh.from_edit_mesh(me)
diff --git a/release/scripts/modules/keyingsets_utils.py b/release/scripts/modules/keyingsets_utils.py
index 7ce5f3e029b..40e74e27ed2 100644
--- a/release/scripts/modules/keyingsets_utils.py
+++ b/release/scripts/modules/keyingsets_utils.py
@@ -57,9 +57,10 @@ def path_add_property(path, prop):
# selected objects (active object must be in object mode)
def RKS_POLL_selected_objects(ksi, context):
+ workspace = context.workspace
ob = context.active_object
if ob:
- return ob.mode == 'OBJECT'
+ return workspace.object_mode == 'OBJECT'
else:
return bool(context.selected_objects)
@@ -67,8 +68,9 @@ def RKS_POLL_selected_objects(ksi, context):
# selected bones
def RKS_POLL_selected_bones(ksi, context):
# we must be in Pose Mode, and there must be some bones selected
+ workspace = context.workspace
ob = context.active_object
- if ob and ob.mode == 'POSE':
+ if ob and workspace.object_mode == 'POSE':
if context.active_pose_bone or context.selected_pose_bones:
return True
@@ -87,8 +89,9 @@ def RKS_POLL_selected_items(ksi, context):
# all selected objects or pose bones, depending on which we've got
def RKS_ITER_selected_item(ksi, context, ks):
+ workspace = context.workspace
ob = context.active_object
- if ob and ob.mode == 'POSE':
+ if ob and workspace.object_mode == 'POSE':
for bone in context.selected_pose_bones:
ksi.generate(context, ks, bone)
else:
diff --git a/release/scripts/startup/bl_operators/freestyle.py b/release/scripts/startup/bl_operators/freestyle.py
index 0cfe78879db..9b1d054cc15 100644
--- a/release/scripts/startup/bl_operators/freestyle.py
+++ b/release/scripts/startup/bl_operators/freestyle.py
@@ -53,6 +53,7 @@ class SCENE_OT_freestyle_fill_range_by_selection(bpy.types.Operator):
def execute(self, context):
import sys
+ workspace = context.workspace
scene = context.scene
view_layer = scene.view_layers.active
lineset = view_layer.freestyle_settings.linesets.active
@@ -79,7 +80,7 @@ class SCENE_OT_freestyle_fill_range_by_selection(bpy.types.Operator):
return {'CANCELLED'}
# Find selected vertices in editmesh
ob = context.active_object
- if ob.type == 'MESH' and ob.mode == 'EDIT' and ob.name != ref.name:
+ if ob.type == 'MESH' and workspace.object_mode == 'EDIT' and ob.name != ref.name:
bpy.ops.object.mode_set(mode='OBJECT')
selected_verts = [v for v in ob.data.vertices if v.select]
bpy.ops.object.mode_set(mode='EDIT')
@@ -143,6 +144,7 @@ class SCENE_OT_freestyle_add_edge_marks_to_keying_set(bpy.types.Operator):
def execute(self, context):
# active keying set
+ workspace = context.workspace
scene = context.scene
ks = scene.keying_sets.active
if ks is None:
@@ -150,7 +152,7 @@ class SCENE_OT_freestyle_add_edge_marks_to_keying_set(bpy.types.Operator):
ks.bl_description = ""
# add data paths to the keying set
ob = context.active_object
- ob_mode = ob.mode
+ ob_mode = workspace.object_mode
mesh = ob.data
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
for i, edge in enumerate(mesh.edges):
@@ -174,6 +176,7 @@ class SCENE_OT_freestyle_add_face_marks_to_keying_set(bpy.types.Operator):
def execute(self, context):
# active keying set
+ workspace = context.workspace
scene = context.scene
ks = scene.keying_sets.active
if ks is None:
@@ -181,7 +184,7 @@ class SCENE_OT_freestyle_add_face_marks_to_keying_set(bpy.types.Operator):
ks.bl_description = ""
# add data paths to the keying set
ob = context.active_object
- ob_mode = ob.mode
+ ob_mode = workspace.object_mode
mesh = ob.data
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
for i, polygon in enumerate(mesh.polygons):
diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py
index c7a11c23c3f..ccc592e80b8 100644
--- a/release/scripts/startup/bl_operators/mesh.py
+++ b/release/scripts/startup/bl_operators/mesh.py
@@ -57,8 +57,9 @@ class MeshMirrorUV(Operator):
precision = self.precision
double_warn = 0
+ workspace = context.workspace
ob = context.active_object
- is_editmode = (ob.mode == 'EDIT')
+ is_editmode = (workspace.object_mode == 'EDIT')
if is_editmode:
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py
index 566487d9d0e..58f3afa3d6c 100644
--- a/release/scripts/startup/bl_operators/object.py
+++ b/release/scripts/startup/bl_operators/object.py
@@ -63,12 +63,13 @@ class SelectPattern(Operator):
pattern_match = (lambda a, b:
fnmatch.fnmatchcase(a.upper(), b.upper()))
is_ebone = False
+ workspace = context.workspace
obj = context.object
- if obj and obj.mode == 'POSE':
+ if obj and workspace.object_mode == 'POSE':
items = obj.data.bones
if not self.extend:
bpy.ops.pose.select_all(action='DESELECT')
- elif obj and obj.type == 'ARMATURE' and obj.mode == 'EDIT':
+ elif obj and obj.type == 'ARMATURE' and workspace.object_mode == 'EDIT':
items = obj.data.edit_bones
if not self.extend:
bpy.ops.armature.select_all(action='DESELECT')
@@ -248,6 +249,8 @@ class SubdivisionSet(Operator):
if not relative and level < 0:
self.level = level = 0
+ workspace = context.workspace
+
def set_object_subd(obj):
for mod in obj.modifiers:
if mod.type == 'MULTIRES':
@@ -257,18 +260,18 @@ class SubdivisionSet(Operator):
for i in range(sub):
bpy.ops.object.multires_subdivide(modifier="Multires")
- if obj.mode == 'SCULPT':
+ if workspace.object_mode == 'SCULPT':
if mod.sculpt_levels != level:
mod.sculpt_levels = level
- elif obj.mode == 'OBJECT':
+ elif workspace.object_mode == 'OBJECT':
if mod.levels != level:
mod.levels = level
return
else:
- if obj.mode == 'SCULPT':
+ if workspace.object_mode == 'SCULPT':
if mod.sculpt_levels + level <= mod.total_levels:
mod.sculpt_levels += level
- elif obj.mode == 'OBJECT':
+ elif workspace.object_mode == 'OBJECT':
if mod.levels + level <= mod.total_levels:
mod.levels += level
return
@@ -284,7 +287,7 @@ class SubdivisionSet(Operator):
# add a new modifier
try:
- if obj.mode == 'SCULPT':
+ if workspace.object_mode == 'SCULPT':
mod = obj.modifiers.new("Multires", 'MULTIRES')
if
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list