[Bf-blender-cvs] [04272613a78] master: Python API: assume that a crashed Python operator returned FINISHED.

Alexander Gavrilov noreply at git.blender.org
Mon Nov 18 20:15:56 CET 2019


Commit: 04272613a78d805e900941b21df16dbbcafc6849
Author: Alexander Gavrilov
Date:   Wed Nov 13 13:42:01 2019 +0300
Branches: master
https://developer.blender.org/rB04272613a78d805e900941b21df16dbbcafc6849

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

===================================================================

M	source/blender/makesrna/intern/rna_wm.c
M	source/blender/makesrna/intern/rna_wm_api.c
M	source/blender/makesrna/intern/rna_wm_gizmo.c

===================================================================

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 */



More information about the Bf-blender-cvs mailing list