Cleanup: use utility function to initialize SelectPick_Params

This commit is contained in:
Campbell Barton
2022-03-30 15:03:12 +11:00
parent 0f33f0de00
commit e74880a659
5 changed files with 42 additions and 19 deletions

View File

@@ -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
}

View File

@@ -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,

View File

@@ -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");
}

View File

@@ -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);

View File

@@ -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,