internal operator/wm/macro function: dont crash if operators are not found (warning will be printed).
This commit is contained in:
@@ -166,23 +166,29 @@ void ED_operatormacros_armature(void)
|
||||
wmOperatorTypeMacro *otmacro;
|
||||
|
||||
ot= WM_operatortype_append_macro("ARMATURE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
|
||||
WM_operatortype_macro_define(ot, "ARMATURE_OT_duplicate");
|
||||
otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
|
||||
RNA_enum_set(otmacro->ptr, "proportional", 0);
|
||||
if(ot) {
|
||||
WM_operatortype_macro_define(ot, "ARMATURE_OT_duplicate");
|
||||
otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
|
||||
RNA_enum_set(otmacro->ptr, "proportional", 0);
|
||||
}
|
||||
|
||||
ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_move", "Extrude", OPTYPE_UNDO|OPTYPE_REGISTER);
|
||||
otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude");
|
||||
RNA_enum_set(otmacro->ptr, "forked", 0);
|
||||
otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
|
||||
RNA_enum_set(otmacro->ptr, "proportional", 0);
|
||||
if(ot) {
|
||||
otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude");
|
||||
RNA_enum_set(otmacro->ptr, "forked", 0);
|
||||
otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
|
||||
RNA_enum_set(otmacro->ptr, "proportional", 0);
|
||||
}
|
||||
|
||||
// XXX would it be nicer to just be able to have standard extrude_move, but set the forked property separate?
|
||||
// that would require fixing a properties bug 19733
|
||||
ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_forked", "Extrude Forked", OPTYPE_UNDO|OPTYPE_REGISTER);
|
||||
otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude");
|
||||
RNA_enum_set(otmacro->ptr, "forked", 1);
|
||||
otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
|
||||
RNA_enum_set(otmacro->ptr, "proportional", 0);
|
||||
if(ot) {
|
||||
otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude");
|
||||
RNA_enum_set(otmacro->ptr, "forked", 1);
|
||||
otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
|
||||
RNA_enum_set(otmacro->ptr, "proportional", 0);
|
||||
}
|
||||
}
|
||||
|
||||
void ED_keymap_armature(wmKeyConfig *keyconf)
|
||||
|
||||
@@ -382,21 +382,24 @@ void WM_operatortype_append_macro_ptr(void (*opfunc)(wmOperatorType*, void*), vo
|
||||
wmOperatorTypeMacro *WM_operatortype_macro_define(wmOperatorType *ot, const char *idname)
|
||||
{
|
||||
wmOperatorTypeMacro *otmacro= MEM_callocN(sizeof(wmOperatorTypeMacro), "wmOperatorTypeMacro");
|
||||
|
||||
|
||||
BLI_strncpy(otmacro->idname, idname, OP_MAX_TYPENAME);
|
||||
|
||||
/* do this on first use, since operatordefinitions might have been not done yet */
|
||||
WM_operator_properties_alloc(&(otmacro->ptr), &(otmacro->properties), idname);
|
||||
WM_operator_properties_sanitize(otmacro->ptr, 1);
|
||||
|
||||
|
||||
BLI_addtail(&ot->macro, otmacro);
|
||||
|
||||
{
|
||||
/* operator should always be found but in the event its not. dont segfault */
|
||||
wmOperatorType *otsub = WM_operatortype_find(idname, 0);
|
||||
RNA_def_pointer_runtime(ot->srna, otsub->idname, otsub->srna,
|
||||
otsub->name, otsub->description);
|
||||
if(otsub) {
|
||||
RNA_def_pointer_runtime(ot->srna, otsub->idname, otsub->srna,
|
||||
otsub->name, otsub->description);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return otmacro;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user