11#include <fmt/format.h>
82 if (win->scene != scene) {
88 const View3D *v3d = (
const View3D *)area->spacedata.first;
106 rctf frame_inside = {
107 node.
runtime->draw_bounds.xmin,
108 node.
runtime->draw_bounds.xmax,
109 node.
runtime->draw_bounds.ymin,
110 node.
runtime->draw_bounds.ymax,
142 switch (node->type_legacy) {
150 if (
BLI_rctf_isect_pt(&node->runtime->draw_bounds,
int(mouse.x),
int(mouse.y))) {
198 if (node && deselect_node) {
233 bool changed =
false;
234 for (
bNode *node : node_tree.all_nodes()) {
247 for (
bNode *node : node_tree.all_nodes()) {
255 if (deselect_nodes) {
257 if (socket->flag &
SELECT) {
277 for (
bNode *node : node_tree.all_nodes()) {
285 if (deselect_nodes) {
287 if (socket->flag &
SELECT) {
302 node_tree.ensure_topology_cache();
304 for (
bNode *input_node : node_tree.nodes_by_type(zone_type->input_idname)) {
305 if (
bNode *output_node = zone_type->get_corresponding_output(node_tree, *input_node)) {
320 for (
bNode *node : node_tree.all_nodes()) {
322 selected_nodes.
add(node);
325 return selected_nodes;
338 bool changed =
false;
339 for (
bNode *node : node_tree.all_nodes()) {
340 if ((node->flag &
SELECT) == 0) {
352 bool changed =
false;
353 for (
bNode *node : node_tree.all_nodes()) {
354 if ((node->flag &
SELECT) == 0) {
366 bool changed =
false;
367 const uint delims[] = {
'.',
'-',
'_',
'\0'};
368 size_t pref_len_act, pref_len_curr;
369 const char *sep, *suf_act, *suf_curr;
372 node_act.
name,
nullptr, delims, &sep, &suf_act, from_right);
375 if (from_right && !(sep && suf_act)) {
377 suf_act = node_act.
name;
380 for (
bNode *node : node_tree.all_nodes()) {
381 if (node->flag &
SELECT) {
385 node->name,
nullptr, delims, &sep, &suf_curr, from_right);
388 if (from_right && !(sep && suf_curr)) {
390 suf_curr = node->name;
393 if ((from_right &&
STREQ(suf_act, suf_curr)) ||
394 (!from_right && (pref_len_act == pref_len_curr) &&
418 if (node_act ==
nullptr) {
422 bool changed =
false;
465 {0,
nullptr, 0,
nullptr,
nullptr},
469 ot->name =
"Select Grouped";
470 ot->description =
"Select nodes with similar properties";
471 ot->idname =
"NODE_OT_select_grouped";
486 "Extend selection instead of deselecting everything first");
488 ot->prop =
RNA_def_enum(
ot->srna,
"type", prop_select_grouped_types, 0,
"Type",
"");
505 bool active_texture_changed =
false;
507 for (
bNode *node_iter : node_tree.all_nodes()) {
508 if (node_iter != &node) {
531 if (!socket->is_icon_visible()) {
534 const float socket_y = socket->runtime->location.y;
538 best_socket = socket;
548 if (io_panel.header_toggle_socket() == &io_socket) {
549 item_to_activate = &io_panel.
item;
552 item_to_activate = &io_socket.
item;
554 tree.tree_interface.active_item_set(item_to_activate);
558 const bNode &group_input_node,
562 tree.ensure_topology_cache();
563 tree.ensure_interface_cache();
565 group_input_node.output_sockets().drop_back(1), cursor.y);
566 if (!indicated_socket) {
569 const int group_input_i = indicated_socket->index();
575 const bNode &group_output_node,
578 tree.ensure_topology_cache();
579 tree.ensure_interface_cache();
581 group_output_node.input_sockets().drop_back(1), cursor.y);
582 if (!indicated_socket) {
585 const int group_output_i = indicated_socket->index();
602 bNode *node =
nullptr;
608 bool changed =
false;
610 bool node_was_selected =
false;
622 node = &sock->owner_node();
634 node = &sock->owner_node();
647 for (
bNodeSocket *tsock : node->output_sockets()) {
655 for (
bNode *tnode : node_tree.all_nodes()) {
659 for (
bNodeSocket *tsock : tnode->output_sockets()) {
676 found = (node !=
nullptr);
677 node_was_selected = node && (node->
flag &
SELECT);
683 else if (found ||
params.deselect_all) {
712 if (node->is_group_input()) {
715 if (node->is_group_output()) {
724 if (node ==
nullptr) {
727 if (
const std::optional<viewer_path::ViewerPathForGeometryNodesViewer> parsed_path =
741 if (!(changed || found)) {
745 bool active_texture_changed =
false;
746 bool viewer_node_changed =
false;
747 if ((node !=
nullptr) && (node_was_selected ==
false ||
params.select_passthrough ==
false)) {
804 ot->idname =
"NODE_OT_select";
805 ot->description =
"Select the node under the cursor";
837 "Deactivate geometry nodes viewer when clicking in empty space");
862 for (
bNode *node : node_tree.all_nodes()) {
865 switch (node->type_legacy) {
870 if (
BLI_rctf_isect(&rectf, &node->runtime->draw_bounds,
nullptr) &&
911 ot->name =
"Box Select";
912 ot->idname =
"NODE_OT_select_box";
913 ot->description =
"Use box selection to select nodes";
931 "Only activate when mouse is not over a node (useful for tweak gesture)");
969 for (
bNode *node : node_tree.all_nodes()) {
970 switch (node->type_legacy) {
975 const float radius_adjusted =
float(radius) / zoom;
976 BLI_rctf_pad(&frame_inside, -2.0f * radius_adjusted, -2.0f * radius_adjusted);
1002 ot->name =
"Circle Select";
1003 ot->idname =
"NODE_OT_select_circle";
1004 ot->description =
"Use circle selection to select nodes";
1046 bool changed =
false;
1057 for (
bNode *node : node_tree.all_nodes()) {
1062 switch (node->type_legacy) {
1070 if (
BLI_rctf_isect(&rectf, &node->runtime->draw_bounds,
nullptr) &&
1085 ®ion->
v2d, center.x, center.y, &screen_co.x, &screen_co.y) &&
1123 ot->name =
"Lasso Select";
1124 ot->description =
"Select nodes using lasso selection";
1125 ot->idname =
"NODE_OT_select_lasso";
1142 "Only activate when mouse is not over a node (useful for tweak gesture)");
1156 for (
const bNode *node : node_tree.all_nodes()) {
1169 node_tree.ensure_topology_cache();
1183 for (
bNode *node : node_tree.all_nodes()) {
1191 for (
bNode *node : node_tree.all_nodes()) {
1207 ot->name =
"(De)select All";
1208 ot->description =
"(De)select all nodes";
1209 ot->idname =
"NODE_OT_select_all";
1232 node_tree.ensure_topology_cache();
1236 for (
bNode *node : initial_selection) {
1237 for (
bNodeSocket *output_socket : node->output_sockets()) {
1238 if (!output_socket->is_available()) {
1241 for (
bNodeSocket *input_socket : output_socket->directly_linked_sockets()) {
1242 if (!input_socket->is_available()) {
1259 ot->name =
"Select Linked To";
1260 ot->description =
"Select nodes linked to the selected ones";
1261 ot->idname =
"NODE_OT_select_linked_to";
1282 node_tree.ensure_topology_cache();
1286 for (
bNode *node : initial_selection) {
1287 for (
bNodeSocket *input_socket : node->input_sockets()) {
1288 if (!input_socket->is_available()) {
1291 for (
bNodeSocket *output_socket : input_socket->directly_linked_sockets()) {
1292 if (!output_socket->is_available()) {
1309 ot->name =
"Select Linked From";
1310 ot->description =
"Select nodes linked from the selected ones";
1311 ot->idname =
"NODE_OT_select_linked_from";
1339 if (active_node ==
nullptr) {
1344 node_tree.ensure_topology_cache();
1345 if (node_tree.all_nodes().size() == 1) {
1350 const int index = toposort.
first_index(active_node);
1352 int new_index = index;
1354 new_index += (prev ? -1 : 1);
1363 bNode *new_active_node = node_tree.all_nodes()[toposort[new_index]->index()];
1364 if (new_active_node == active_node) {
1381 ot->name =
"Activate Same Type Next/Prev";
1382 ot->description =
"Activate and view same node type, step by step";
1383 ot->idname =
"NODE_OT_select_same_type_step";
1404 if (label == node.
name) {
1407 return fmt::format(
"{} ({})", label, node.
name);
1412 return fmt::format(
"{}: \"{}\" ({})",
TIP_(
"Input"), socket.
name, node.
name);
1417 return fmt::format(
"{}: \"{}\" ({})",
TIP_(
"String"),
str, node.
name);
1426 type_name =
TIP_(
"Node Group");
1428 return fmt::format(
"{}: \"{}\" ({})", type_name,
BKE_id_name(
id), node.
name);
1442 std::string search_str;
1448 auto add_data_block_item = [&](
bNode &node,
const ID *id) {
1453 search.
add(search_str, &scope.
construct<Item>(Item{&node, search_str}));
1457 ntree.ensure_topology_cache();
1462 if (node->is_type(
"FunctionNodeInputString")) {
1464 const StringRef value_str = storage->string;
1468 search.
add(search_str, &scope.
construct<Item>(Item{node, search_str}));
1471 if (node->is_group_input()) {
1472 for (
const bNodeSocket *socket : node->output_sockets().drop_back(1)) {
1473 if (!socket->is_directly_linked()) {
1478 search.
add(search_str, &scope.
construct<Item>(Item{node, search_str}));
1483 const bool skip_data_block =
1487 if (!skip_data_block) {
1488 add_data_block_item(*node, node->
id);
1492 for (
const bNodeSocket *socket : node->input_sockets()) {
1493 switch (socket->type) {
1495 if (socket->is_logically_linked()) {
1501 if (!value_str.is_empty()) {
1504 search.
add(search_str, &scope.
construct<Item>(Item{node, search_str}));
1509 add_data_block_item(
1514 add_data_block_item(
1520 add_data_block_item(
1526 add_data_block_item(
1535 for (
const Item *item : filtered_items) {
1559 static char search[256] =
"";
1571 block, search, 0, ICON_VIEWZOOM,
sizeof(search), 0, 0, box_width,
UI_UNIT_Y,
"");
1579 block,
ButType::Label, 0,
"", 0, -height, box_width, height,
nullptr, 0, 0, std::nullopt);
1582 std::array<int, 2> bounds_offset = {0, -
UI_UNIT_Y};
1599 ot->name =
"Find Node";
1600 ot->description =
"Search for a node by name and focus and select it";
1601 ot->idname =
"NODE_OT_find_node";
WorkSpace * CTX_wm_workspace(const bContext *C)
SpaceNode * CTX_wm_space_node(const bContext *C)
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
const IDTypeInfo * BKE_idtype_get_info_from_id(const ID *id)
const char * BKE_id_name(const ID &id)
void BKE_main_ensure_invariants(Main &bmain, std::optional< blender::Span< ID * > > modified_ids=std::nullopt)
void BKE_viewer_path_clear(ViewerPath *viewer_path)
bScreen * BKE_workspace_active_screen_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
#define BLI_assert_unreachable()
bool BLI_lasso_is_point_inside(blender::Span< blender::int2 > mcoords, int sx, int sy, int error_value)
void BLI_lasso_boundbox(rcti *rect, blender::Span< blender::int2 > mcoords)
#define LISTBASE_FOREACH(type, var, list)
MINLINE bool compare_v3v3(const float v1[3], const float v2[3], float limit) ATTR_WARN_UNUSED_RESULT
BLI_INLINE float BLI_rctf_cent_y(const struct rctf *rct)
bool BLI_rctf_isect(const struct rctf *src1, const struct rctf *src2, struct rctf *dest)
BLI_INLINE float BLI_rctf_cent_x(const struct rctf *rct)
bool BLI_rcti_isect_pt(const struct rcti *rect, int x, int y)
bool BLI_rctf_isect_circle(const struct rctf *rect, const float xy[2], float radius)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
void BLI_rctf_pad(struct rctf *rect, float pad_x, float pad_y)
bool BLI_rctf_isect_pt(const struct rctf *rect, float x, float y)
void BLI_rctf_rcti_copy(struct rctf *dst, const struct rcti *src)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
bool BLI_rctf_inside_rctf(const rctf *rct_a, const rctf *rct_b)
size_t size_t size_t BLI_str_partition_ex_utf8(const char *str, const char *end, const unsigned int delim[], const char **r_sep, const char **r_suf, bool from_right) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
#define STREQLEN(a, b, n)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_id_tag_update_for_side_effect_request(Depsgraph *depsgraph, ID *id, unsigned int flags)
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
void ED_node_set_active(Main *bmain, SpaceNode *snode, bNodeTree *ntree, bNode *node, bool *r_active_texture_changed)
void ED_node_set_active_viewer_key(SpaceNode *snode)
bool ED_operator_node_active(bContext *C)
eSelectOp ED_select_op_modal(eSelectOp sel_op, bool is_first)
#define SEL_OP_USE_PRE_DESELECT(sel_op)
std::string ED_select_circle_get_name(wmOperatorType *ot, PointerRNA *ptr)
SelectPick_Params ED_select_pick_params_from_operator(PointerRNA *ptr) ATTR_NONNULL(1)
std::string ED_select_pick_get_name(wmOperatorType *ot, PointerRNA *ptr)
bool ED_view3d_has_workbench_in_texture_color(const Scene *scene, const Object *ob, const View3D *v3d)
@ UI_BLOCK_MOVEMOUSE_QUIT
void UI_block_theme_style_set(uiBlock *block, char theme_style)
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, blender::ui::EmbossType emboss)
@ UI_BUT_ACTIVATE_ON_INIT
void UI_block_bounds_set_popup(uiBlock *block, int addval, const int bounds_offset[2])
void UI_popup_block_invoke(bContext *C, uiBlockCreateFunc func, void *arg, uiFreeArgFunc arg_free)
void UI_but_func_search_set(uiBut *but, uiButSearchCreateFn search_create_fn, uiButSearchUpdateFn search_update_fn, void *arg, bool free_arg, uiFreeArgFunc search_arg_free_fn, uiButHandleFunc search_exec_fn, void *active)
uiBut * uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxncpy, int x, int y, short width, short height, std::optional< blender::StringRef > tip)
int UI_searchbox_size_x_guess(const bContext *C, const uiButSearchUpdateFn update_fn, void *arg)
bool UI_search_item_add(uiSearchItems *items, blender::StringRef name, void *poin, int iconid, int but_flag, uint8_t name_prefix_offset)
#define UI_SEARCHBOX_BOUNDS
int UI_searchbox_size_y()
@ UI_BLOCK_THEME_STYLE_POPUP
void UI_block_flag_enable(uiBlock *block, int flag)
uiBut * uiDefBut(uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int retval, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, std::optional< blender::StringRef > tip)
void UI_but_flag_enable(uiBut *but, int flag)
bool UI_view2d_view_to_region_clip(const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst) ATTR_NONNULL()
@ OPTYPE_DEPENDS_ON_CURSOR
BPy_StructRNA * depsgraph
constexpr bool contains(int64_t value) const
T & construct(Args &&...args)
constexpr int64_t first_index(const T &search_value) const
constexpr IndexRange index_range() const
static constexpr int64_t not_found
constexpr int64_t find(char c, int64_t pos=0) const
constexpr bool is_empty() const
void add(const StringRef str, T *user_data, const int weight=0)
Vector< T * > query(const StringRef query) const
static bool is_inside(int x, int y, int cols, int rows)
float distance(VecOp< float, D >, VecOp< float, D >) RET
std::string node_label(const bNodeTree &ntree, const bNode &node)
bNode * node_get_active(bNodeTree &ntree)
Span< const bNodeZoneType * > all_zone_types()
bool node_set_selected(bNode &node, bool select)
static bool has_workbench_in_texture_color(const wmWindowManager *wm, const Scene *scene, const Object *ob)
static uiBlock * node_find_menu(bContext *C, ARegion *region, void *arg_optype)
static bool node_select_grouped_type(bNodeTree &node_tree, bNode &node_act)
rctf node_frame_rect_inside(const SpaceNode &snode, const bNode &node)
void node_deselect_all_input_sockets(bNodeTree &node_tree, bool deselect_nodes)
static void node_find_exec_fn(bContext *C, void *, void *arg2)
@ NODE_SELECT_GROUPED_SUFIX
@ NODE_SELECT_GROUPED_TYPE
@ NODE_SELECT_GROUPED_PREFIX
@ NODE_SELECT_GROUPED_COLOR
void NODE_OT_select_circle(wmOperatorType *ot)
static bool is_position_over_node_or_socket(SpaceNode &snode, ARegion ®ion, const float2 &mouse)
void tree_draw_order_update(bNodeTree &ntree)
static wmOperatorStatus node_find_node_invoke(bContext *C, wmOperator *op, const wmEvent *)
static wmOperatorStatus node_box_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool space_node_view_flag(bContext &C, SpaceNode &snode, ARegion ®ion, int node_flag, int smooth_viewtx)
static bool node_mouse_select(bContext *C, wmOperator *op, const int2 mval, const SelectPick_Params ¶ms)
static wmOperatorStatus node_select_linked_from_exec(bContext *C, wmOperator *)
static bool do_lasso_select_node(bContext *C, const Span< int2 > mcoords, eSelectOp sel_op)
static wmOperatorStatus node_box_select_exec(bContext *C, wmOperator *op)
static wmOperatorStatus node_lasso_select_exec(bContext *C, wmOperator *op)
void node_select_paired(bNodeTree &node_tree)
static wmOperatorStatus node_select_grouped_exec(bContext *C, wmOperator *op)
void NODE_OT_find_node(wmOperatorType *ot)
static void node_find_update_fn(const bContext *C, void *, const char *str, uiSearchItems *items, const bool)
void NODE_OT_select_lasso(wmOperatorType *ot)
bool node_deselect_all(bNodeTree &node_tree)
void node_socket_select(bNode *node, bNodeSocket &sock)
bNodeSocket * node_find_indicated_socket(SpaceNode &snode, ARegion ®ion, const float2 &cursor, const eNodeSocketInOut in_out)
void NODE_OT_select(wmOperatorType *ot)
static std::string node_find_create_node_label(const bNodeTree &ntree, const bNode &node)
static bool node_select_grouped_name(bNodeTree &node_tree, bNode &node_act, const bool from_right)
Array< bNode * > tree_draw_order_calc_nodes_reversed(bNodeTree &ntree)
static void node_socket_toggle(bNode *node, bNodeSocket &sock, bool deselect_node)
static bool nodes_are_same_type_for_select(const bNode &a, const bNode &b)
static wmOperatorStatus node_select_same_type_step_exec(bContext *C, wmOperator *op)
static wmOperatorStatus node_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void node_socket_deselect(bNode *node, bNodeSocket &sock, bool deselect_node)
void NODE_OT_select_grouped(wmOperatorType *ot)
static void activate_interface_socket(bNodeTree &tree, bNodeTreeInterfaceSocket &io_socket)
bNode * node_under_mouse_get(const SpaceNode &snode, const float2 mouse)
static void handle_group_output_node_selection(bNodeTree &tree, const bNode &group_output_node, const float2 &cursor)
VectorSet< bNode * > get_selected_nodes(bNodeTree &node_tree)
void NODE_OT_select_linked_from(wmOperatorType *ot)
void node_deselect_all_output_sockets(bNodeTree &node_tree, bool deselect_nodes)
static wmOperatorStatus node_select_exec(bContext *C, wmOperator *op)
void NODE_OT_select_same_type_step(wmOperatorType *ot)
void node_select_single(bContext &C, bNode &node)
static std::string node_find_create_string_value(const bNode &node, const StringRef str)
static bool node_select_grouped_color(bNodeTree &node_tree, bNode &node_act)
void NODE_OT_select_linked_to(wmOperatorType *ot)
static bool any_node_selected(const bNodeTree &node_tree)
bool node_or_socket_isect_event(const bContext &C, const wmEvent &event)
static wmOperatorStatus node_circleselect_exec(bContext *C, wmOperator *op)
static wmOperatorStatus node_select_all_exec(bContext *C, wmOperator *op)
static bool is_event_over_node_or_socket(const bContext &C, const wmEvent &event)
static bool node_frame_select_isect_mouse(const SpaceNode &snode, const bNode &node, const float2 &mouse)
static wmOperatorStatus node_select_linked_to_exec(bContext *C, wmOperator *)
static std::string node_find_create_group_input_label(const bNode &node, const bNodeSocket &socket)
void NODE_OT_select_box(wmOperatorType *ot)
void NODE_OT_select_all(wmOperatorType *ot)
static std::string node_find_create_data_block_value(const bNode &node, const ID &id)
static wmOperatorStatus node_lasso_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static const bNodeSocket * find_socket_at_mouse_y(const Span< const bNodeSocket * > sockets, const float view_y)
static void handle_group_input_node_selection(bNodeTree &tree, const bNode &group_input_node, const float2 &cursor)
void activate_geometry_node(Main &bmain, SpaceNode &snode, bNode &node, std::optional< int > item_identifier=std::nullopt)
std::optional< ViewerPathForGeometryNodesViewer > parse_geometry_nodes_viewer(const ViewerPath &viewer_path)
T distance(const T &a, const T &b)
T max(const T &a, const T &b)
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
#define NODE_RESIZE_MARGIN
void RNA_int_set_array(PointerRNA *ptr, const char *name, const int *values)
void RNA_int_get_array(PointerRNA *ptr, const char *name, int *values)
int RNA_int_get(PointerRNA *ptr, const char *name)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_int_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const int *default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
SpaceNode_Runtime * runtime
struct bNodeTree * edittree
struct Collection * value
bNodeTreeInterfaceItem item
bNodeTreeInterfaceItem item
bNodeRuntimeHandle * runtime
struct wmOperatorType * type
void WM_event_drag_start_mval(const wmEvent *event, const ARegion *region, int r_mval[2])
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
bool WM_gesture_is_modal_first(const wmGesture *gesture)
void WM_gesture_box_cancel(bContext *C, wmOperator *op)
wmOperatorStatus WM_gesture_circle_invoke(bContext *C, wmOperator *op, const wmEvent *event)
Array< int2 > WM_gesture_lasso_path_to_array(bContext *, wmOperator *op)
wmOperatorStatus WM_gesture_lasso_modal(bContext *C, wmOperator *op, const wmEvent *event)
wmOperatorStatus WM_gesture_box_modal(bContext *C, wmOperator *op, const wmEvent *event)
wmOperatorStatus WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void WM_gesture_lasso_cancel(bContext *C, wmOperator *op)
wmOperatorStatus WM_gesture_circle_modal(bContext *C, wmOperator *op, const wmEvent *event)
wmOperatorStatus WM_gesture_lasso_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void WM_operator_properties_gesture_box(wmOperatorType *ot)
void WM_operator_properties_select_operation_simple(wmOperatorType *ot)
void WM_operator_properties_border_to_rctf(wmOperator *op, rctf *r_rect)
void WM_operator_properties_gesture_lasso(wmOperatorType *ot)
void WM_operator_properties_gesture_circle(wmOperatorType *ot)
void WM_operator_properties_select_all(wmOperatorType *ot)
void WM_operator_properties_mouse_select(wmOperatorType *ot)
wmOperatorStatus WM_operator_flag_only_pass_through_on_press(wmOperatorStatus retval, const wmEvent *event)
wmOperatorStatus WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *)
int WM_operator_smooth_viewtx_get(const wmOperator *op)