Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gavrilov <angavrilov@gmail.com>2019-11-13 13:42:01 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2019-11-18 22:03:40 +0300
commit04272613a78d805e900941b21df16dbbcafc6849 (patch)
tree45f008b0d2c472d5fea86e7cb7234a1b6c64bef3
parent64c27b96909834381558375ee1f27bdec04360f3 (diff)
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
-rw-r--r--source/blender/makesrna/intern/rna_wm.c4
-rw-r--r--source/blender/makesrna/intern/rna_wm_api.c8
-rw-r--r--source/blender/makesrna/intern/rna_wm_gizmo.c4
3 files changed, 8 insertions, 8 deletions
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 5f60ecf449b..8e68495dd78 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -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)"},
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index 1330250edab..841d82adcb7 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -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 */
diff --git a/source/blender/makesrna/intern/rna_wm_gizmo.c b/source/blender/makesrna/intern/rna_wm_gizmo.c
index ba26929d808..0bd6769d3ad 100644
--- a/source/blender/makesrna/intern/rna_wm_gizmo.c
+++ b/source/blender/makesrna/intern/rna_wm_gizmo.c
@@ -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 */