66#include "RNA_prototypes.hh"
129 bool changed =
false;
171 if (base_active != base) {
188 const bool do_extend)
249 Object *ob = base->object;
274 for (ebone = ebone_parent->
next; ebone; ebone = ebone->
next) {
322 if (sce && scene != sce) {
333 if (base !=
nullptr) {
355 parent_tselem->
flag &= ~TSE_SELECTED;
365 else if (recursive) {
454 Scene *sce =
nullptr;
465 if (sce && scene != sce) {
502 if (node.is_layer()) {
503 if (grease_pencil.has_active_group()) {
507 GreasePencilv3LayerGroup,
513 if (node.is_group()) {
514 if (grease_pencil.has_active_layer()) {
521 GreasePencilv3LayerGroup,
525 grease_pencil.set_active_node(&node);
557 for (
Object *ob : objects) {
561 if (
ELEM(
nullptr, ob_iter, ob_iter->
pose, ob_iter->
data)) {
576 pchan->
bone->
flag &= ~BONE_SELECTED;
611 bone_iter = bone_iter->next)
620 bone->
flag &= ~BONE_SELECTED;
663 ob_params.no_dup_data =
true;
666 scene, view_layer,
nullptr, &ob_params);
747 seq->
flag &= ~SELECT;
763 select_single_seq(seq, 1);
774 select_single_seq(p, 0);
815 const bool handle_all_types)
822 if (handle_all_types) {
849 switch (tselem->
type) {
929 if (ob && ob->
data == arm) {
969 if (base ==
nullptr) {
986 if (ob == ob_pose && ob->
pose) {
1025 const Editing *ed = scene->ed;
1056 if (node.is_layer() && grease_pencil.is_layer_active(&node.as_layer())) {
1132 if (tep ==
nullptr) {
1137 if (tselem->
id == (
const ID *)scene) {
1176 switch (tselem->
type) {
1296 switch (tselem->
type) {
1449 const bool recursive,
1450 const bool do_activate_data)
1464 else if (do_activate_data) {
1476 TreeStoreElem *tselem = TREESTORE(te);
1477 if ((tselem->type == TSE_SOME_ID) && (te->idcode == ID_OB)) {
1478 tselem->flag |= TSE_SELECTED;
1484 if (do_activate_data ==
false) {
1487 else if (te->idcode ==
ID_SCE) {
1488 if (tvc->scene != (
Scene *)tselem->id) {
1521 if (base !=
nullptr) {
1537 else if (do_activate_data) {
1546 const short select_flag)
1558 if (clear_flag && !recursive) {
1566 tselem->
flag &= ~TSE_SELECTED;
1604 return parent_collection;
1646 tselem->
flag &= ~TSE_SELECTED;
1664 bool selecting_before = selecting;
1667 if (
ELEM(te, active, cursor)) {
1668 selecting = !selecting;
1671 if (can_select && (selecting_before || selecting)) {
1679 Collection *child_collection = in_collection;
1681 child_collection =
static_cast<LayerCollection *
>(te->directdata)->collection;
1684 &te->subtree, active, cursor, selecting, recurse, child_collection);
1715 if (active == cursor) {
1730 &space_outliner->
tree, active, cursor,
false, recurse, in_collection);
1759 const float view_mval[2])
1778 const bool use_range,
1779 const bool deselect_all,
1786 bool changed =
false, rebuild_tree =
false;
1810 bool merged_elements =
false;
1811 bool is_over_icon =
false;
1813 space_outliner, te, view_mval[0], &merged_elements, &is_over_icon);
1816 if (merged_elements) {
1832 if (!recurse && (extend || use_range) && is_over_icon) {
1838 C, space_outliner, activate_te, extend, (recurse && is_over_icon), parent_collection);
1917 ot->
idname =
"OUTLINER_OT_item_activate";
1918 ot->
description =
"Handle mouse clicks to select and activate items";
1930 ot->
srna,
"extend_range",
false,
"Extend Range",
"Select a range from active element");
1936 "Deselect On Nothing",
1937 "Deselect all when nothing under the cursor");
1941 ot->
srna,
"recurse",
false,
"Recurse",
"Select objects recursively from active element");
1956 tree_iterator::all_open(*space_outliner, [&](
TreeElement *te) {
1958 outliner_item_select(
1959 C, space_outliner, te, (select ? OL_ITEM_SELECT : OL_ITEM_DESELECT) | OL_ITEM_EXTEND);
2021 ot->
idname =
"OUTLINER_OT_select_box";
2022 ot->
description =
"Use box selection to select tree elements";
2039 ot->
srna,
"tweak",
false,
"Tweak",
"Tweak gesture from empty space for box selection");
2085 while (successor->
parent) {
2090 successor = successor->
parent;
2104 else if (te->
next) {
2124 else if (!toggle_all && te->
parent) {
2150 const int direction,
2152 const bool toggle_all)
2156 switch (direction) {
2197 active_te = active_te->
parent;
2209 int y_max = region->v2d.cur.ymax -
UI_UNIT_Y;
2210 int y_min = region->v2d.cur.ymin;
2213 if (te->
ys > y_max) {
2216 else if (te->
ys < y_min) {
2255 ot->
name =
"Walk Select";
2256 ot->
idname =
"OUTLINER_OT_select_walk";
2257 ot->
description =
"Use walk navigation to select tree elements";
2271 ot->
srna,
"toggle_all",
false,
"Toggle All",
"Toggle open/close hierarchy");
C++ functions to deal with Armature collections (i.e. the successor of bone layers).
void ANIM_armature_bonecoll_active_set(bArmature *armature, BoneCollection *bcoll)
bool ANIM_bone_is_visible_editbone(const bArmature *armature, const EditBone *ebone)
bool ANIM_bone_is_visible(const bArmature *armature, const Bone *bone)
#define PBONE_SELECTABLE(arm, bone)
bool BKE_collection_has_object_recursive(Collection *collection, Object *ob)
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_END
Collection * BKE_collection_object_find(Main *bmain, Scene *scene, Collection *collection, Object *ob)
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN(_collection, _object)
void BKE_constraint_panel_expand(struct bConstraint *con)
ReportList * CTX_wm_reports(const bContext *C)
bScreen * CTX_wm_screen(const bContext *C)
LayerCollection * CTX_data_layer_collection(const bContext *C)
SpaceOutliner * CTX_wm_space_outliner(const bContext *C)
Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Object * CTX_data_edit_object(const bContext *C)
Main * CTX_data_main(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmMsgBus * CTX_wm_message_bus(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_gpencil_layer_active_set(struct bGPdata *gpd, struct bGPDlayer *active)
Low-level operations for grease pencil.
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
void BKE_view_layer_base_deselect_all(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
Base * BKE_view_layer_base_find(ViewLayer *view_layer, Object *ob)
bool BKE_layer_collection_activate(ViewLayer *view_layer, LayerCollection *lc)
ListBase * BKE_view_layer_object_bases_get(ViewLayer *view_layer)
void BKE_view_layer_base_select_and_set_active(ViewLayer *view_layer, Base *selbase)
blender::Vector< Base * > BKE_view_layer_array_from_bases_in_mode_params(const Scene *scene, ViewLayer *view_layer, const View3D *v3d, const ObjectsInModeParams *params)
ViewLayer * BKE_view_layer_find_from_collection(const Scene *scene, LayerCollection *lc)
bool BKE_id_is_editable(const Main *bmain, const ID *id)
void BKE_modifier_panel_expand(ModifierData *md)
General operations, lookup, etc. for blender objects.
void BKE_object_modifier_set_active(Object *ob, ModifierData *md)
bool BKE_object_is_in_editmode(const Object *ob)
Object * BKE_object_pose_armature_get(Object *ob)
ModifierData * BKE_object_active_modifier(const Object *ob)
bool BKE_object_is_mode_compat(const Object *ob, eObjectMode object_mode)
blender::Vector< Object * > BKE_object_pose_array_get_unique(const Scene *scene, ViewLayer *view_layer, View3D *v3d)
bool BKE_object_is_child_recursive(const Object *ob_parent, const Object *ob_child)
struct ParticleSystem * psys_get_current(struct Object *ob)
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_shaderfx_panel_expand(struct ShaderFxData *fx)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ BASE_ENABLED_AND_MAYBE_VISIBLE_IN_VIEWPORT
@ eModifierType_ParticleSystem
@ eModifierType_Collision
@ eModifierType_DynamicPaint
Object is a sort of wrapper for general info.
#define OB_TYPE_SUPPORT_EDITMODE(_type)
@ TSE_VIEW_COLLECTION_BASE
@ TSE_GPENCIL_EFFECT_BASE
@ TSE_BONE_COLLECTION_BASE
#define BASE_SELECTED(v3d, base)
@ BCONTEXT_BONE_CONSTRAINT
#define EBONE_SELECTABLE(arm, ebone)
void ED_outliner_select_sync_from_object_tag(bContext *C)
void ED_outliner_select_sync_from_outliner(bContext *C, SpaceOutliner *space_outliner)
bool ED_operator_region_outliner_active(bContext *C)
void ED_region_tag_redraw_no_rebuild(ARegion *region)
void ED_region_tag_redraw(ARegion *region)
bool ED_operator_outliner_active(bContext *C)
#define SEL_OP_USE_PRE_DESELECT(sel_op)
bool ED_sequencer_deselect_all(Scene *scene)
bool ED_text_activate_in_screen(bContext *C, Text *text)
void ED_undo_push(bContext *C, const char *str)
void ED_undo_group_begin(bContext *C)
void ED_undo_group_end(bContext *C)
Read Guarded memory(de)allocation.
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()
#define ND_BONE_COLLECTION
#define NS_LAYER_COLLECTION
bool ED_armature_edit_deselect_all_multi_ex(const Span< Base * > bases)
bool ED_armature_ebone_is_child_recursive(EditBone *ebone_parent, EditBone *ebone_child)
void ED_armature_ebone_select_set(EditBone *ebone, bool select)
void activate(bool forceActivation=false) const
Sequence & get_sequence() const
Sequence & get_sequence() const
const Depsgraph * depsgraph
ccl_device_inline float4 select(const int4 mask, const float4 a, const float4 b)
void base_select(Base *base, eObjectSelect_Mode mode)
void mode_generic_exit(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
bool editmode_enter_ex(Main *bmain, Scene *scene, Object *ob, int flag)
void base_activate_with_mode_exit_if_needed(bContext *C, Base *base)
bool mode_set(bContext *C, eObjectMode mode)
bool editmode_exit_ex(Main *bmain, Scene *scene, Object *obedit, int flag)
void all(const SpaceOutliner &space_outliner, const VisitorFn visitor)
bool outliner_item_is_co_within_close_toggle(const TreeElement *te, float view_co_x)
static void tree_element_defgroup_activate(bContext *C, TreeElement *te, TreeStoreElem *tselem)
static void do_outliner_object_select_recursive(const Scene *scene, ViewLayer *view_layer, Object *ob_parent, bool select)
static eOLDrawState tree_element_layer_collection_state_get(const bContext *C, const TreeElement *te)
static void tree_element_constraint_activate(bContext *C, const Scene *scene, ViewLayer *view_layer, TreeElement *te, TreeStoreElem *tselem, const eOLSetState set)
void outliner_tag_redraw_avoid_rebuild_on_open_change(const SpaceOutliner *space_outliner, ARegion *region)
static void tree_element_master_collection_activate(const bContext *C)
static void do_outliner_range_select(bContext *C, SpaceOutliner *space_outliner, TreeElement *cursor, const bool extend, const bool recurse, Collection *in_collection)
static void tree_element_world_activate(bContext *C, Scene *scene, TreeElement *te)
static void tree_element_gplayer_activate(bContext *C, TreeElement *te, TreeStoreElem *tselem)
static void do_outliner_ebone_select_recursive(bArmature *arm, EditBone *ebone_parent, bool select)
static void tree_element_sequence_dup_activate(Scene *scene, TreeElement *)
static eOLDrawState tree_element_active_camera_get(const Scene *scene, const TreeElement *te)
static eOLDrawState tree_element_pose_state_get(const Scene *scene, const ViewLayer *view_layer, const TreeStoreElem *tselem)
static eOLDrawState tree_element_bone_collection_state_get(const TreeElement *te, const TreeStoreElem *tselem)
static void tree_element_bone_activate(bContext *C, const Scene *scene, ViewLayer *view_layer, TreeElement *te, TreeStoreElem *tselem, const eOLSetState set, bool recursive)
static void outliner_box_select(bContext *C, SpaceOutliner *space_outliner, const rctf *rectf, const bool select)
static void do_outliner_bone_select_recursive(bArmature *arm, Bone *bone_parent, bool select)
TreeElement * outliner_find_item_at_x_in_row(const SpaceOutliner *space_outliner, TreeElement *parent_te, float view_co_x, bool *r_is_merged_icon, bool *r_is_over_icon)
static void do_outliner_item_posemode_toggle(bContext *C, Scene *scene, Base *base)
static eOLDrawState tree_element_object_state_get(const TreeViewContext *tvc, const TreeStoreElem *tselem)
static bool outliner_is_co_within_active_mode_column(bContext *C, SpaceOutliner *space_outliner, const float view_mval[2])
static TreeElement * outliner_walk_left(SpaceOutliner *space_outliner, TreeElement *te, bool toggle_all)
static eOLDrawState tree_element_sequence_dup_state_get(const TreeElement *te)
static int outliner_box_select_exec(bContext *C, wmOperator *op)
static void outliner_sync_to_properties_editors(const bContext *C, PointerRNA *ptr, const int context)
float outliner_right_columns_width(const SpaceOutliner *space_outliner)
static eOLDrawState tree_element_posechannel_state_get(const Object *ob_pose, const TreeElement *te, const TreeStoreElem *tselem)
static TreeElement * outliner_find_next_element(SpaceOutliner *space_outliner, TreeElement *te)
static int outliner_box_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static eOLDrawState tree_element_ebone_state_get(const TreeElement *te)
static bool do_outliner_range_select_recursive(ListBase *lb, TreeElement *active, TreeElement *cursor, bool selecting, const bool recurse, Collection *in_collection)
static void do_outliner_item_editmode_toggle(bContext *C, Scene *scene, Base *base)
static void do_outliner_item_activate_tree_element(bContext *C, const TreeViewContext *tvc, SpaceOutliner *space_outliner, TreeElement *te, TreeStoreElem *tselem, const bool extend, const bool recursive, const bool do_activate_data)
static void tree_element_bonecollection_activate(bContext *C, TreeElement *te, TreeStoreElem *tselem)
TreeElement * outliner_search_back_te(TreeElement *te, short idcode)
static void outliner_set_properties_tab(bContext *C, TreeElement *te, TreeStoreElem *tselem)
static Collection * outliner_collection_get_for_recursive(bContext *C, TreeElement *te)
bool outliner_flag_set(const SpaceOutliner &space_outliner, const short flag, const short set)
static void tree_element_posechannel_activate(bContext *C, const Scene *scene, ViewLayer *view_layer, TreeElement *te, TreeStoreElem *tselem, const eOLSetState set, bool recursive)
void OUTLINER_OT_item_activate(wmOperatorType *ot)
static int outliner_item_activate_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void tree_element_camera_activate(bContext *C, Scene *scene, TreeElement *te)
TreeElement * outliner_find_item_at_y(const SpaceOutliner *space_outliner, const ListBase *tree, float view_co_y)
static eOLDrawState tree_element_gplayer_state_get(const TreeElement *te)
void outliner_item_mode_toggle(bContext *C, TreeViewContext *tvc, TreeElement *te, bool do_extend)
bPoseChannel * outliner_find_parent_bone(TreeElement *te, TreeElement **r_bone_te)
static TreeElement * outliner_find_previous_element(SpaceOutliner *space_outliner, TreeElement *te)
static TreeElement * do_outliner_select_walk(SpaceOutliner *space_outliner, TreeElement *te, const int direction, const bool extend, const bool toggle_all)
eOLDrawState tree_element_type_active_state_get(const bContext *C, const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
static void outliner_walk_scroll(SpaceOutliner *space_outliner, ARegion *region, TreeElement *te)
static TreeElement * outliner_walk_right(SpaceOutliner *space_outliner, TreeElement *te, bool toggle_all)
void outliner_viewcontext_init(const bContext *C, TreeViewContext *tvc)
void OUTLINER_OT_select_walk(wmOperatorType *ot)
static void tree_element_viewlayer_activate(bContext *C, TreeElement *te)
static eOLDrawState tree_element_active_material_get(const Scene *scene, ViewLayer *view_layer, const TreeElement *te)
static TreeElement * find_walk_select_start_element(SpaceOutliner *space_outliner, bool *r_changed)
void outliner_scroll_view(SpaceOutliner *space_outliner, ARegion *region, int delta_y)
static void tree_element_modifier_activate(bContext *C, TreeElement *te, TreeStoreElem *tselem, const eOLSetState set)
bool outliner_is_element_visible(const TreeElement *te)
void tree_element_type_active_set(bContext *C, const TreeViewContext *tvc, TreeElement *te, TreeStoreElem *tselem, eOLSetState set, bool recursive)
eOLDrawState tree_element_active_state_get(const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
bool outliner_is_co_within_mode_column(SpaceOutliner *space_outliner, const float view_mval[2])
void outliner_item_openclose(TreeElement *te, bool open, bool toggle_all)
static void do_outliner_item_mode_toggle_generic(bContext *C, TreeViewContext *tvc, Base *base)
static void tree_element_ebone_activate(bContext *C, const Scene *scene, ViewLayer *view_layer, TreeElement *te, TreeStoreElem *tselem, const eOLSetState set, bool recursive)
static eOLDrawState tree_element_defgroup_state_get(const Scene *scene, ViewLayer *view_layer, const TreeElement *te, const TreeStoreElem *tselem)
static eOLDrawState tree_element_active_world_get(const Scene *scene, const TreeElement *te)
TreeElementT * tree_element_cast(const TreeElement *te)
ID * outliner_search_back(TreeElement *te, short idcode)
static eOLDrawState tree_element_bone_state_get(const Scene *scene, ViewLayer *view_layer, const TreeElement *te, const TreeStoreElem *tselem)
static bool outliner_is_co_within_restrict_columns(const SpaceOutliner *space_outliner, const ARegion *region, float view_co_x)
void merged_element_search_menu_invoke(bContext *C, TreeElement *parent_te, TreeElement *activate_te)
static eOLDrawState tree_element_viewlayer_state_get(const bContext *C, const TreeElement *te)
static void tree_element_psys_activate(bContext *C, TreeStoreElem *tselem)
static eOLDrawState tree_element_grease_pencil_node_state_get(const TreeElement *te)
static eOLDrawState tree_element_active_scene_get(const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
static int outliner_item_do_activate_from_cursor(bContext *C, const int mval[2], const bool extend, const bool use_range, const bool deselect_all, const bool recurse)
static void do_outliner_select_recursive(ListBase *lb, bool selecting, Collection *in_collection)
static TreeElement * outliner_find_rightmost_visible_child(SpaceOutliner *space_outliner, TreeElement *te)
static void tree_element_sequence_activate(bContext *C, Scene *scene, TreeElement *te, const eOLSetState set)
static void tree_element_material_activate(bContext *C, const Scene *scene, ViewLayer *view_layer, TreeElement *te)
bool outliner_item_is_co_over_name_icons(const TreeElement *te, float view_co_x)
TreeElement * outliner_find_element_with_flag(const ListBase *lb, short flag)
static void tree_element_active_ebone__sel(bContext *C, bArmature *arm, EditBone *ebone, short sel)
static int outliner_walk_select_invoke(bContext *C, wmOperator *op, const wmEvent *)
static TreeElement * outliner_element_find_successor_in_parents(TreeElement *te)
static void tree_element_layer_collection_activate(bContext *C, TreeElement *te)
bool outliner_shows_mode_column(const SpaceOutliner &space_outliner)
static eOLDrawState tree_element_modifier_state_get(const TreeElement *te, const TreeStoreElem *tselem)
static void tree_element_text_activate(bContext *C, TreeElement *te)
void OUTLINER_OT_select_box(wmOperatorType *ot)
static eOLDrawState tree_element_master_collection_state_get(const bContext *C)
static bool can_select_recursive(TreeElement *te, Collection *in_collection)
static void tree_element_grease_pencil_node_activate(bContext *C, TreeElement *te, TreeStoreElem *tselem)
void tree_element_activate(bContext *C, const TreeViewContext *tvc, TreeElement *te, eOLSetState set, bool handle_all_types)
void outliner_item_select(bContext *C, SpaceOutliner *space_outliner, TreeElement *te, short select_flag)
static eOLDrawState tree_element_sequence_state_get(const Scene *scene, const TreeElement *te)
static void tree_element_object_activate(bContext *C, Scene *scene, ViewLayer *view_layer, TreeElement *te, const eOLSetState set, bool recursive)
#define TSELEM_OPEN(telm, sv)
bool ED_object_posemode_enter_ex(Main *bmain, Object *ob)
bool ED_object_posemode_exit_ex(Main *bmain, Object *ob)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_id_pointer_create(ID *id)
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)
Editing * SEQ_editing_get(const Scene *scene)
void SEQ_select_active_set(Scene *scene, Sequence *seq)
struct Collection * collection
ListBase layer_collections
struct BoneCollection * active_collection
struct EditBone * act_edbone
struct bArmature_Runtime runtime
TreeStoreElem * store_elem
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
void(* cancel)(bContext *C, wmOperator *op)
void WM_event_drag_start_mval(const wmEvent *event, const ARegion *region, int r_mval[2])
void WM_main_add_notifier(uint type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_gesture_box_cancel(bContext *C, wmOperator *op)
int WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_box_modal(bContext *C, wmOperator *op, const wmEvent *event)
#define WM_msg_publish_rna_prop(mbus, id_, data_, type_, prop_)
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_select_walk_direction(wmOperatorType *ot)
void WM_window_set_active_scene(Main *bmain, bContext *C, wmWindow *win, Scene *scene)
void WM_window_set_active_view_layer(wmWindow *win, ViewLayer *view_layer)
ViewLayer * WM_window_get_active_view_layer(const wmWindow *win)
Scene * WM_window_get_active_scene(const wmWindow *win)
void WM_windows_scene_data_sync(const ListBase *win_lb, Scene *scene)