Commit: b0c8d35142c3a0fa6f468efff41c44ce9ae1d1d0 Author: Campbell Barton Date: Thu May 17 20:28:14 2018 +0200 Branches: blender2.8 https://developer.blender.org/rBb0c8d35142c3a0fa6f468efff41c44ce9ae1d1d0
Tool System: use context mode Was using object mode in the workspace API which isn't useful for accessing tools. =================================================================== M release/scripts/startup/bl_ui/space_toolsystem_common.py M source/blender/editors/mesh/editmesh_extrude.c M source/blender/makesrna/RNA_enum_types.h M source/blender/makesrna/intern/rna_context.c M source/blender/makesrna/intern/rna_workspace.c M source/blender/windowmanager/intern/wm_toolsystem.c =================================================================== diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index ad5c970a6d5..c4ef5023563 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -284,8 +284,7 @@ class ToolSelectPanelHelper: def _tool_active_from_context(context, space_type, mode=None, create=False): if space_type == 'VIEW_3D': if mode is None: - obj = context.active_object - mode = obj.mode if obj is not None else 'OBJECT' + mode = context.mode tool = context.workspace.tools.from_space_view3d_mode(mode, create) if tool is not None: return tool diff --git a/source/blender/editors/mesh/editmesh_extrude.c b/source/blender/editors/mesh/editmesh_extrude.c index 67596ef5c8a..95bf8e89b0e 100644 --- a/source/blender/editors/mesh/editmesh_extrude.c +++ b/source/blender/editors/mesh/editmesh_extrude.c @@ -420,7 +420,7 @@ static void manipulator_mesh_extrude_orientation_matrix_set( static bool manipulator_mesh_extrude_poll(const bContext *C, wmManipulatorGroupType *wgt) { WorkSpace *workspace = CTX_wm_workspace(C); - const bToolKey tkey = { .space_type = SPACE_VIEW3D, .mode = OB_MODE_EDIT}; + const bToolKey tkey = { .space_type = SPACE_VIEW3D, .mode = CTX_MODE_EDIT_MESH, }; bToolRef_Runtime *tref_rt = WM_toolsystem_runtime_find(workspace, &tkey); if ((tref_rt == NULL) || !STREQ(wgt->idname, tref_rt->manipulator_group) || diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index 447dc4ce289..6ebdb845b03 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -205,7 +205,7 @@ extern const EnumPropertyItem rna_enum_dt_layers_select_src_items[]; extern const EnumPropertyItem rna_enum_dt_layers_select_dst_items[]; extern const EnumPropertyItem rna_enum_abc_compression_items[]; - +extern const EnumPropertyItem rna_enum_context_mode_items[]; /* API calls */ int rna_node_tree_type_to_enum(struct bNodeTreeType *typeinfo); diff --git a/source/blender/makesrna/intern/rna_context.c b/source/blender/makesrna/intern/rna_context.c index fd128548ed1..c8d7cb1fcdc 100644 --- a/source/blender/makesrna/intern/rna_context.c +++ b/source/blender/makesrna/intern/rna_context.c @@ -37,6 +37,24 @@ #include "rna_internal.h" /* own include */ +const EnumPropertyItem rna_enum_context_mode_items[] = { + {CTX_MODE_EDIT_MESH, "EDIT_MESH", 0, "Mesh Edit", ""}, + {CTX_MODE_EDIT_CURVE, "EDIT_CURVE", 0, "Curve Edit", ""}, + {CTX_MODE_EDIT_SURFACE, "EDIT_SURFACE", 0, "Surface Edit", ""}, + {CTX_MODE_EDIT_TEXT, "EDIT_TEXT", 0, "Edit Edit", ""}, + {CTX_MODE_EDIT_ARMATURE, "EDIT_ARMATURE", 0, "Armature Edit", ""}, /* PARSKEL reuse will give issues */ + {CTX_MODE_EDIT_METABALL, "EDIT_METABALL", 0, "Metaball Edit", ""}, + {CTX_MODE_EDIT_LATTICE, "EDIT_LATTICE", 0, "Lattice Edit", ""}, + {CTX_MODE_POSE, "POSE", 0, "Pose ", ""}, + {CTX_MODE_SCULPT, "SCULPT", 0, "Sculpt", ""}, + {CTX_MODE_PAINT_WEIGHT, "PAINT_WEIGHT", 0, "Weight Paint", ""}, + {CTX_MODE_PAINT_VERTEX, "PAINT_VERTEX", 0, "Vertex Paint", ""}, + {CTX_MODE_PAINT_TEXTURE, "PAINT_TEXTURE", 0, "Texture Paint", ""}, + {CTX_MODE_PARTICLE, "PARTICLE", 0, "Particle", ""}, + {CTX_MODE_OBJECT, "OBJECT", 0, "Object", ""}, + {0, NULL, 0, NULL, NULL} +}; + #ifdef RNA_RUNTIME #include "RE_engine.h" @@ -194,24 +212,6 @@ void RNA_def_context(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; - static const EnumPropertyItem mode_items[] = { - {CTX_MODE_EDIT_MESH, "EDIT_MESH", 0, "Mesh Edit", ""}, - {CTX_MODE_EDIT_CURVE, "EDIT_CURVE", 0, "Curve Edit", ""}, - {CTX_MODE_EDIT_SURFACE, "EDIT_SURFACE", 0, "Surface Edit", ""}, - {CTX_MODE_EDIT_TEXT, "EDIT_TEXT", 0, "Edit Edit", ""}, - {CTX_MODE_EDIT_ARMATURE, "EDIT_ARMATURE", 0, "Armature Edit", ""}, /* PARSKEL reuse will give issues */ - {CTX_MODE_EDIT_METABALL, "EDIT_METABALL", 0, "Metaball Edit", ""}, - {CTX_MODE_EDIT_LATTICE, "EDIT_LATTICE", 0, "Lattice Edit", ""}, - {CTX_MODE_POSE, "POSE", 0, "Pose ", ""}, - {CTX_MODE_SCULPT, "SCULPT", 0, "Sculpt", ""}, - {CTX_MODE_PAINT_WEIGHT, "PAINT_WEIGHT", 0, "Weight Paint", ""}, - {CTX_MODE_PAINT_VERTEX, "PAINT_VERTEX", 0, "Vertex Paint", ""}, - {CTX_MODE_PAINT_TEXTURE, "PAINT_TEXTURE", 0, "Texture Paint", ""}, - {CTX_MODE_PARTICLE, "PARTICLE", 0, "Particle", ""}, - {CTX_MODE_OBJECT, "OBJECT", 0, "Object", ""}, - {0, NULL, 0, NULL, NULL} - }; - srna = RNA_def_struct(brna, "Context", NULL); RNA_def_struct_ui_text(srna, "Context", "Current windowmanager and data context"); RNA_def_struct_sdna(srna, "bContext"); @@ -308,7 +308,7 @@ void RNA_def_context(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, "rna_Context_user_preferences_get", NULL, NULL, NULL); prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, mode_items); + RNA_def_property_enum_items(prop, rna_enum_context_mode_items); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_enum_funcs(prop, "rna_Context_mode_get", NULL, NULL); } diff --git a/source/blender/makesrna/intern/rna_workspace.c b/source/blender/makesrna/intern/rna_workspace.c index 485cb298dae..3c499fbc195 100644 --- a/source/blender/makesrna/intern/rna_workspace.c +++ b/source/blender/makesrna/intern/rna_workspace.c @@ -137,7 +137,7 @@ const EnumPropertyItem *rna_WorkSpace_tools_mode_itemf( switch (workspace->tools_space_type) { case SPACE_VIEW3D: - return rna_enum_object_mode_items; + return rna_enum_context_mode_items; case SPACE_IMAGE: return rna_enum_space_image_mode_items; } @@ -229,7 +229,7 @@ static void rna_def_workspace_tools(BlenderRNA *brna, PropertyRNA *cprop) /* add owner_id */ func = RNA_def_function(srna, "from_space_view3d_mode", "rna_WorkSpace_tools_from_space_view3d_mode"); RNA_def_function_ui_description(func, ""); - parm = RNA_def_enum(func, "mode", rna_enum_object_mode_items, 0, "", ""); + parm = RNA_def_enum(func, "mode", rna_enum_context_mode_items, 0, "", ""); RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); RNA_def_boolean(func, "create", false, "Create", ""); /* return type */ diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c index 24b902a6a92..1191bec3f65 100644 --- a/source/blender/windowmanager/intern/wm_toolsystem.c +++ b/source/blender/windowmanager/intern/wm_toolsystem.c @@ -293,7 +293,13 @@ int WM_toolsystem_mode_from_spacetype( /* 'sa' may be NULL in this case. */ ViewLayer *view_layer = BKE_workspace_view_layer_get(workspace, scene); Object *obact = OBACT(view_layer); - mode = obact ? obact->mode : OB_MODE_OBJECT; + if (obact != NULL) { + Object *obedit = OBEDIT_FROM_OBACT(obact); + mode = CTX_data_mode_enum_ex(obedit, obact, obact->mode); + } + else { + mode = CTX_MODE_OBJECT; + } break; } case SPACE_IMAGE: _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs