Tool System: use context mode
Was using object mode in the workspace API which isn't useful for accessing tools.
This commit is contained in:
parent
486ff7e52c
commit
b0c8d35142
|
@ -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
|
||||
|
|
|
@ -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) ||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue