Cleanup: use utility function to initialize SelectPick_Params
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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, ¶ms);
|
||||
|
||||
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,
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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, ¶ms);
|
||||
|
||||
const bool changed = uv_mouse_select(C, co, ¶ms);
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user