Commit: e74880a659270c91db721e9490a2fe15df837760
Author: Campbell Barton
Date:   Wed Mar 30 15:03:12 2022 +1100
Branches: master
https://developer.blender.org/rBe74880a659270c91db721e9490a2fe15df837760

Cleanup: use utility function to initialize SelectPick_Params

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

M       source/blender/editors/include/ED_select_utils.h
M       source/blender/editors/space_view3d/view3d_select.c
M       source/blender/editors/util/select_utils.c
M       source/blender/editors/uvedit/uvedit_select.c
M       source/blender/windowmanager/WM_api.h

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

diff --git a/source/blender/editors/include/ED_select_utils.h 
b/source/blender/editors/include/ED_select_utils.h
index b9ef5c283aa..dbe1b582132 100644
--- a/source/blender/editors/include/ED_select_utils.h
+++ b/source/blender/editors/include/ED_select_utils.h
@@ -6,11 +6,14 @@
 
 #pragma once
 
+#include "BLI_compiler_attrs.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 struct KDTree_1d;
+struct wmOperator;
 
 enum {
   SEL_TOGGLE = 0,
@@ -93,7 +96,15 @@ struct SelectPick_Params {
 /**
  * Utility to get #eSelectPickMode from booleans for convenience.
  */
-eSelectOp ED_select_op_from_booleans(bool extend, bool deselect, bool toggle);
+eSelectOp ED_select_op_from_operator(struct wmOperator *op)
+    ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT;
+
+/**
+ * Initialize `params` from `op`,
+ * these properties are defined by #WM_operator_properties_mouse_select.
+ */
+void ED_select_pick_params_from_operator(struct wmOperator *op, struct 
SelectPick_Params *params)
+    ATTR_NONNULL(1, 2);
 
 #ifdef __cplusplus
 }
diff --git a/source/blender/editors/space_view3d/view3d_select.c 
b/source/blender/editors/space_view3d/view3d_select.c
index 54a335f98ed..9b66e24ce7d 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -1646,9 +1646,7 @@ static int bone_select_menu_exec(bContext *C, wmOperator 
*op)
   const int name_index = RNA_enum_get(op->ptr, "name");
 
   const struct SelectPick_Params params = {
-      .sel_op = ED_select_op_from_booleans(RNA_boolean_get(op->ptr, "extend"),
-                                           RNA_boolean_get(op->ptr, 
"deselect"),
-                                           RNA_boolean_get(op->ptr, "toggle")),
+      .sel_op = ED_select_op_from_operator(op),
   };
 
   View3D *v3d = CTX_wm_view3d(C);
@@ -2918,14 +2916,10 @@ static int view3d_select_exec(bContext *C, wmOperator 
*op)
   Scene *scene = CTX_data_scene(C);
   Object *obedit = CTX_data_edit_object(C);
   Object *obact = CTX_data_active_object(C);
-  const struct SelectPick_Params params = {
-      .sel_op = ED_select_op_from_booleans(RNA_boolean_get(op->ptr, "extend"),
-                                           RNA_boolean_get(op->ptr, 
"deselect"),
-                                           RNA_boolean_get(op->ptr, "toggle")),
-      .deselect_all = RNA_boolean_get(op->ptr, "deselect_all"),
-      .select_passthrough = RNA_boolean_get(op->ptr, "select_passthrough"),
 
-  };
+  struct SelectPick_Params params = {0};
+  ED_select_pick_params_from_operator(op, &params);
+
   bool center = RNA_boolean_get(op->ptr, "center");
   bool enumerate = RNA_boolean_get(op->ptr, "enumerate");
   /* Only force object select for edit-mode to support vertex parenting,
diff --git a/source/blender/editors/util/select_utils.c 
b/source/blender/editors/util/select_utils.c
index 380c7ed0e43..53f9aca8e8d 100644
--- a/source/blender/editors/util/select_utils.c
+++ b/source/blender/editors/util/select_utils.c
@@ -10,6 +10,12 @@
 #include "BLI_math.h"
 #include "BLI_utildefines.h"
 
+#include "DNA_windowmanager_types.h"
+
+#include "RNA_access.h"
+
+#include "WM_types.h"
+
 #include "ED_select_utils.h"
 
 int ED_select_op_action(const eSelectOp sel_op, const bool is_select, const 
bool is_inside)
@@ -113,8 +119,12 @@ bool ED_select_similar_compare_float_tree(const KDTree_1d 
*tree,
   return false;
 }
 
-eSelectOp ED_select_op_from_booleans(const bool extend, const bool deselect, 
const bool toggle)
+eSelectOp ED_select_op_from_operator(wmOperator *op)
 {
+  const bool extend = RNA_boolean_get(op->ptr, "extend");
+  const bool deselect = RNA_boolean_get(op->ptr, "deselect");
+  const bool toggle = RNA_boolean_get(op->ptr, "toggle");
+
   if (extend) {
     return SEL_OP_ADD;
   }
@@ -126,3 +136,11 @@ eSelectOp ED_select_op_from_booleans(const bool extend, 
const bool deselect, con
   }
   return SEL_OP_SET;
 }
+
+void ED_select_pick_params_from_operator(wmOperator *op, struct 
SelectPick_Params *params)
+{
+  memset(params, 0x0, sizeof(*params));
+  params->sel_op = ED_select_op_from_operator(op);
+  params->deselect_all = RNA_boolean_get(op->ptr, "deselect_all");
+  params->select_passthrough = RNA_boolean_get(op->ptr, "select_passthrough");
+}
diff --git a/source/blender/editors/uvedit/uvedit_select.c 
b/source/blender/editors/uvedit/uvedit_select.c
index ed4aa6985c4..02685e2efb3 100644
--- a/source/blender/editors/uvedit/uvedit_select.c
+++ b/source/blender/editors/uvedit/uvedit_select.c
@@ -2622,13 +2622,9 @@ static int uv_select_exec(bContext *C, wmOperator *op)
   float co[2];
 
   RNA_float_get_array(op->ptr, "location", co);
-  const struct SelectPick_Params params = {
-      .sel_op = ED_select_op_from_booleans(RNA_boolean_get(op->ptr, "extend"),
-                                           RNA_boolean_get(op->ptr, 
"deselect"),
-                                           RNA_boolean_get(op->ptr, "toggle")),
-      .deselect_all = RNA_boolean_get(op->ptr, "deselect_all"),
-      .select_passthrough = RNA_boolean_get(op->ptr, "select_passthrough"),
-  };
+
+  struct SelectPick_Params params = {0};
+  ED_select_pick_params_from_operator(op, &params);
 
   const bool changed = uv_mouse_select(C, co, &params);
 
diff --git a/source/blender/windowmanager/WM_api.h 
b/source/blender/windowmanager/WM_api.h
index 0864627ebe3..b0fb0c5d6df 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -39,6 +39,7 @@ struct MenuType;
 struct PointerRNA;
 struct PropertyRNA;
 struct ScrArea;
+struct SelectPick_Params;
 struct View3D;
 struct ViewLayer;
 struct bContext;
@@ -796,6 +797,9 @@ void WM_operator_properties_gesture_straightline(struct 
wmOperatorType *ot, int
  * Use with #WM_gesture_circle_invoke
  */
 void WM_operator_properties_gesture_circle(struct wmOperatorType *ot);
+/**
+ * See #ED_select_pick_params_from_operator to initialize parameters defined 
here.
+ */
 void WM_operator_properties_mouse_select(struct wmOperatorType *ot);
 void WM_operator_properties_select_all(struct wmOperatorType *ot);
 void WM_operator_properties_select_action(struct wmOperatorType *ot,

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to