46class AbstractTreeDisplay;
47class AbstractTreeElement;
111#define TREESTORE_ID_TYPE(_id) \
112 (ELEM(GS((_id)->name), \
126 ELEM(GS((_id)->name), \
142 ELEM(GS((_id)->name), \
174#define OL_NAMEBUTTON 1
191#define TREESTORE(a) ((a)->store_elem)
196#define OL_TOG_USER_BUTS_USERS (UI_UNIT_X * 1.2f + V2D_SCROLL_WIDTH)
198#define OL_RNA_COLX (UI_UNIT_X * 15)
199#define OL_RNA_COL_SIZEX (UI_UNIT_X * 7.5f)
200#define OL_RNA_COL_SPACEX (UI_UNIT_X * 2.5f)
204#define SUPPORT_FILTER_OUTLINER(space_outliner_) \
205 (ELEM((space_outliner_)->outlinevis, SO_VIEW_LAYER, SO_OVERRIDES_LIBRARY))
223#define SEARCHING_OUTLINER(sov) ((sov)->search_flags & SO_SEARCH_RECURSIVE)
226#define TSELEM_OPEN(telm, sv) \
227 (CHECK_TYPE_INLINE(telm, TreeStoreElem *), \
228 (((telm)->flag & TSE_CLOSED) == 0 || \
229 (SEARCHING_OUTLINER(sv) && ((telm)->flag & TSE_CHILDSEARCH))))
309 const char *propname,
344 bool handle_all_types);
397 bool recurse_selected);
602 bool *r_is_merged_icon,
603 bool *r_is_over_icon);
633 int filter_tselem_flag,
683 static_assert(std::is_base_of_v<AbstractTreeElement, TreeElementT>,
684 "Requested tree-element type must be an AbstractTreeElement");
void OUTLINER_OT_expanded_toggle(wmOperatorType *ot)
bool outliner_item_is_co_within_close_toggle(const TreeElement *te, float view_co_x)
TreeTraversalAction(*)(TreeElement *te, void *customdata) TreeTraversalFunc
void OUTLINER_OT_delete(wmOperatorType *ot)
void OUTLINER_OT_collection_duplicate_linked(wmOperatorType *ot)
int outliner_flag_is_any_test(ListBase *lb, short flag, const int curlevel)
void OUTLINER_OT_collection_objects_deselect(wmOperatorType *ot)
bool outliner_item_is_co_over_icon(const TreeElement *te, float view_co_x)
void OUTLINER_OT_collection_disable_render(wmOperatorType *ot)
void outliner_tag_redraw_avoid_rebuild_on_open_change(const SpaceOutliner *space_outliner, ARegion *region)
void OUTLINER_OT_item_rename(wmOperatorType *ot)
void OUTLINER_OT_scene_operation(wmOperatorType *ot)
void OUTLINER_OT_collection_link(wmOperatorType *ot)
void OUTLINER_OT_collection_color_tag_set(wmOperatorType *ot)
void OUTLINER_OT_collection_hierarchy_delete(wmOperatorType *ot)
void OUTLINER_OT_collection_exclude_set(wmOperatorType *ot)
void OUTLINER_OT_collection_show(wmOperatorType *ot)
void OUTLINER_OT_show_hierarchy(wmOperatorType *ot)
TreeElement * outliner_find_posechannel(ListBase *lb, const bPoseChannel *pchan)
void OUTLINER_OT_highlight_update(wmOperatorType *ot)
bool outliner_is_collection_tree_element(const TreeElement *te)
void outliner_free_tree_element(TreeElement *element, ListBase *parent_subtree)
void OUTLINER_OT_data_operation(wmOperatorType *ot)
void OUTLINER_OT_lib_operation(wmOperatorType *ot)
void OUTLINER_OT_drivers_add_selected(wmOperatorType *ot)
void OUTLINER_OT_select_all(wmOperatorType *ot)
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)
void OUTLINER_OT_constraint_operation(wmOperatorType *ot)
void OUTLINER_OT_lib_relocate(wmOperatorType *ot)
TreeElement * outliner_find_id(SpaceOutliner *space_outliner, ListBase *lb, const ID *id)
void OUTLINER_OT_collection_indirect_only_clear(wmOperatorType *ot)
void OUTLINER_OT_hide(wmOperatorType *ot)
TreeElement * outliner_add_collection_recursive(SpaceOutliner *space_outliner, Collection *collection, TreeElement *ten)
float outliner_right_columns_width(const SpaceOutliner *space_outliner)
void OUTLINER_OT_collection_holdout_set(wmOperatorType *ot)
void OUTLINER_OT_collection_hide(wmOperatorType *ot)
void outliner_collection_isolate_flag(Scene *scene, ViewLayer *view_layer, LayerCollection *layer_collection, Collection *collection, PropertyRNA *layer_or_collection_prop, const char *propname, const bool value)
void id_delete_tag_fn(bContext *C, ReportList *reports, Scene *, TreeElement *te, TreeStoreElem *, TreeStoreElem *tselem)
void OUTLINER_OT_collection_exclude_clear(wmOperatorType *ot)
TreeElement * outliner_search_back_te(TreeElement *te, short idcode)
void OUTLINER_OT_collection_objects_select(wmOperatorType *ot)
bool outliner_flag_set(const SpaceOutliner &space_outliner, const short flag, const short set)
bool outliner_requires_rebuild_on_select_or_active_change(const SpaceOutliner *space_outliner)
void OUTLINER_OT_item_activate(wmOperatorType *ot)
void OUTLINER_OT_modifier_operation(wmOperatorType *ot)
void outliner_collection_delete(bContext *C, Main *bmain, Scene *scene, ReportList *reports, bool do_hierarchy)
void OUTLINER_OT_collection_drop(wmOperatorType *ot)
TreeElementIcon tree_element_get_icon(TreeStoreElem *tselem, TreeElement *te)
TreeElement * outliner_find_item_at_y(const SpaceOutliner *space_outliner, const ListBase *tree, float view_co_y)
void OUTLINER_OT_id_paste(wmOperatorType *ot)
void outliner_free_tree(ListBase *tree)
void OUTLINER_OT_clear_filter(wmOperatorType *ot)
void outliner_item_mode_toggle(bContext *C, TreeViewContext *tvc, TreeElement *te, bool do_extend)
void outliner_build_tree(Main *mainvar, Scene *scene, ViewLayer *view_layer, SpaceOutliner *space_outliner, ARegion *region)
void outliner_set_coordinates(const ARegion *region, const SpaceOutliner *space_outliner)
bPoseChannel * outliner_find_parent_bone(TreeElement *te, TreeElement **r_bone_te)
void OUTLINER_OT_datastack_drop(wmOperatorType *ot)
void OUTLINER_OT_start_filter(wmOperatorType *ot)
void OUTLINER_OT_unhide_all(wmOperatorType *ot)
void OUTLINER_OT_drivers_delete_selected(wmOperatorType *ot)
eOLDrawState tree_element_type_active_state_get(const bContext *C, const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
void OUTLINER_OT_collection_hide_inside(wmOperatorType *ot)
void OUTLINER_OT_show_one_level(wmOperatorType *ot)
void OUTLINER_OT_collection_enable(wmOperatorType *ot)
void OUTLINER_OT_show_active(wmOperatorType *ot)
void outliner_do_object_operation_ex(bContext *C, ReportList *reports, Scene *scene, SpaceOutliner *space_outliner, ListBase *lb, outliner_operation_fn operation_fn, bool recurse_selected)
void OUTLINER_OT_id_copy(wmOperatorType *ot)
void OUTLINER_OT_object_operation(wmOperatorType *ot)
void outliner_viewcontext_init(const bContext *C, TreeViewContext *tvc)
void OUTLINER_OT_select_walk(wmOperatorType *ot)
bool outliner_is_element_in_view(const TreeElement *te, const View2D *v2d)
void OUTLINER_OT_orphans_manage(wmOperatorType *ot)
TreeTraversalAction outliner_collect_selected_objects(TreeElement *te, void *customdata)
TreeElement * outliner_find_editbone(ListBase *lb, const EditBone *ebone)
Collection * outliner_collection_from_tree_element(const TreeElement *te)
void outliner_scroll_view(SpaceOutliner *space_outliner, ARegion *region, int delta_y)
bool outliner_flag_flip(const SpaceOutliner &space_outliner, const short flag)
void OUTLINER_OT_animdata_operation(wmOperatorType *ot)
void lib_relocate_fn(bContext *C, ReportList *, Scene *, TreeElement *te, TreeStoreElem *, TreeStoreElem *tselem)
int outliner_main_region_context(const bContext *C, const char *member, bContextDataResult *result)
bool outliner_is_element_visible(const TreeElement *te)
@ TE_CHILD_NOT_IN_COLLECTION
@ TE_PRETEND_HAS_CHILDREN
int tree_element_id_type_to_index(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_OT_lib_reload(wmOperatorType *ot)
void OUTLINER_OT_material_drop(wmOperatorType *ot)
void OUTLINER_OT_scene_drop(wmOperatorType *ot)
void outliner_item_openclose(TreeElement *te, bool open, bool toggle_all)
void OUTLINER_OT_action_set(wmOperatorType *ot)
void OUTLINER_OT_parent_drop(wmOperatorType *ot)
bool outliner_tree_traverse(const SpaceOutliner *space_outliner, ListBase *tree, int filter_te_flag, int filter_tselem_flag, TreeTraversalFunc func, void *customdata)
void OUTLINER_OT_scroll_page(wmOperatorType *ot)
void OUTLINER_OT_keyingset_remove_selected(wmOperatorType *ot)
void OUTLINER_OT_id_remap(wmOperatorType *ot)
void outliner_sync_selection(const bContext *C, SpaceOutliner *space_outliner)
void OUTLINER_OT_id_delete(wmOperatorType *ot)
TreeElementT * tree_element_cast(const TreeElement *te)
ID * outliner_search_back(TreeElement *te, short idcode)
void merged_element_search_menu_invoke(bContext *C, TreeElement *parent_te, TreeElement *activate_te)
void OUTLINER_OT_keyingset_add_selected(wmOperatorType *ot)
TreeElement * outliner_find_tree_element(ListBase *lb, const TreeStoreElem *store_elem)
TreeElement * outliner_find_parent_element(ListBase *lb, TreeElement *parent_te, const TreeElement *child_te)
void id_remap_fn(bContext *C, ReportList *, Scene *, TreeElement *, TreeStoreElem *, TreeStoreElem *tselem)
void lib_reload_fn(bContext *C, ReportList *, Scene *, TreeElement *te, TreeStoreElem *, TreeStoreElem *tselem)
void outliner_cleanup_tree(SpaceOutliner *space_outliner)
void OUTLINER_OT_item_openclose(wmOperatorType *ot)
void outliner_do_object_operation(bContext *C, ReportList *reports, Scene *scene, SpaceOutliner *space_outliner, ListBase *lb, outliner_operation_fn operation_fn)
void OUTLINER_OT_collection_holdout_clear(wmOperatorType *ot)
void OUTLINER_OT_collection_duplicate(wmOperatorType *ot)
void OUTLINER_OT_collection_isolate(wmOperatorType *ot)
void OUTLINER_OT_collection_disable(wmOperatorType *ot)
bool outliner_item_is_co_over_name(const TreeElement *te, float view_co_x)
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)
void OUTLINER_OT_collection_show_inside(wmOperatorType *ot)
void outliner_operatortypes()
void OUTLINER_OT_liboverride_troubleshoot_operation(wmOperatorType *ot)
void outliner_keymap(wmKeyConfig *keyconf)
void outliner_tree_dimensions(SpaceOutliner *space_outliner, int *r_width, int *r_height)
bool outliner_has_element_warnings(const SpaceOutliner &space_outliner)
void OUTLINER_OT_operation(wmOperatorType *ot)
void OUTLINER_OT_parent_clear(wmOperatorType *ot)
bool outliner_shows_mode_column(const SpaceOutliner &space_outliner)
void item_rename_fn(bContext *C, ReportList *reports, Scene *, TreeElement *te, TreeStoreElem *, TreeStoreElem *tselem)
void OUTLINER_OT_select_box(wmOperatorType *ot)
void OUTLINER_OT_collection_new(wmOperatorType *ot)
void OUTLINER_OT_collection_instance(wmOperatorType *ot)
void draw_outliner(const bContext *C, bool do_rebuild)
void OUTLINER_OT_collection_indirect_only_set(wmOperatorType *ot)
TreeTraversalAction outliner_collect_selected_collections(TreeElement *te, void *customdata)
void OUTLINER_OT_id_operation(wmOperatorType *ot)
void tree_element_activate(bContext *C, const TreeViewContext *tvc, TreeElement *te, eOLSetState set, bool handle_all_types)
void OUTLINER_OT_liboverride_operation(wmOperatorType *ot)
void outliner_item_select(bContext *C, SpaceOutliner *space_outliner, TreeElement *te, short select_flag)
void OUTLINER_OT_item_drag_drop(wmOperatorType *ot)
void outliner_dropboxes()
void OUTLINER_OT_orphans_purge(wmOperatorType *ot)
void OUTLINER_OT_collection_enable_render(wmOperatorType *ot)
std::unique_ptr< treehash::TreeHash > tree_hash
SpaceOutliner_Runtime()=default
~SpaceOutliner_Runtime()=default
std::unique_ptr< AbstractTreeDisplay > tree_display
TreeStoreElem * store_elem
std::unique_ptr< AbstractTreeElement > abstract_element