Python API: assume that a crashed Python operator returned FINISHED.
The CANCELLED return value from an operator is intended for signaling that the operator aborted execution without changing anything, and an Undo stack entry should not be created. When a Python operator crashes, it is not safe to assume that it did nothing, so it should interpret it as FINISHED instead. Otherwise, the undo system behavior after an operator failure feels broken. Differential Revision: https://developer.blender.org/D6241
This commit is contained in:
parent
64c27b9690
commit
04272613a7
|
@ -469,12 +469,12 @@ const EnumPropertyItem rna_enum_operator_return_items[] = {
|
|||
"CANCELLED",
|
||||
0,
|
||||
"Cancelled",
|
||||
"When no action has been taken, operator exits"},
|
||||
"The operator exited without doing anything, so no undo entry should be pushed"},
|
||||
{OPERATOR_FINISHED,
|
||||
"FINISHED",
|
||||
0,
|
||||
"Finished",
|
||||
"When the operator is complete, operator exits"},
|
||||
"The operator exited after completing its action"},
|
||||
/* used as a flag */
|
||||
{OPERATOR_PASS_THROUGH, "PASS_THROUGH", 0, "Pass Through", "Do nothing and pass the event on"},
|
||||
{OPERATOR_INTERFACE, "INTERFACE", 0, "Interface", "Handled but not executed (popup menus)"},
|
||||
|
|
|
@ -639,7 +639,7 @@ static void rna_generic_op_invoke(FunctionRNA *func, int flag)
|
|||
|
||||
if (flag & WM_GEN_INVOKE_RETURN) {
|
||||
parm = RNA_def_enum_flag(
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_CANCELLED, "result", "");
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_FINISHED, "result", "");
|
||||
RNA_def_function_return(func, parm);
|
||||
}
|
||||
}
|
||||
|
@ -914,7 +914,7 @@ void RNA_api_operator(StructRNA *srna)
|
|||
|
||||
/* better name? */
|
||||
parm = RNA_def_enum_flag(
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_CANCELLED, "result", "");
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_FINISHED, "result", "");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
/* check */
|
||||
|
@ -939,7 +939,7 @@ void RNA_api_operator(StructRNA *srna)
|
|||
|
||||
/* better name? */
|
||||
parm = RNA_def_enum_flag(
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_CANCELLED, "result", "");
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_FINISHED, "result", "");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "modal", NULL); /* same as invoke */
|
||||
|
@ -952,7 +952,7 @@ void RNA_api_operator(StructRNA *srna)
|
|||
|
||||
/* better name? */
|
||||
parm = RNA_def_enum_flag(
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_CANCELLED, "result", "");
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_FINISHED, "result", "");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
/* draw */
|
||||
|
|
|
@ -1073,7 +1073,7 @@ static void rna_def_gizmo(BlenderRNA *brna, PropertyRNA *cprop)
|
|||
parm = RNA_def_enum_flag(func, "tweak", tweak_actions, 0, "Tweak", "");
|
||||
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
||||
parm = RNA_def_enum_flag(
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_CANCELLED, "result", "");
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_FINISHED, "result", "");
|
||||
RNA_def_function_return(func, parm);
|
||||
/* wmGizmo.property_update */
|
||||
/* TODO */
|
||||
|
@ -1092,7 +1092,7 @@ static void rna_def_gizmo(BlenderRNA *brna, PropertyRNA *cprop)
|
|||
parm = RNA_def_pointer(func, "event", "Event", "", "");
|
||||
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
|
||||
parm = RNA_def_enum_flag(
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_CANCELLED, "result", "");
|
||||
func, "result", rna_enum_operator_return_items, OPERATOR_FINISHED, "result", "");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
/* wmGizmo.exit */
|
||||
|
|
Loading…
Reference in New Issue