106 #define TREESTORE_ID_TYPE(_id) \
107 (ELEM(GS((_id)->name), \
121 ELEM(GS((_id)->name), \
137 ELEM(GS((_id)->name), \
169 #define OL_NAMEBUTTON 1
186 #define TREESTORE(a) ((a)->store_elem)
189 #define OL_Y_OFFSET 2
191 #define OL_TOG_USER_BUTS_USERS (UI_UNIT_X * 2.0f + V2D_SCROLL_WIDTH)
192 #define OL_TOG_USER_BUTS_STATUS (UI_UNIT_X + V2D_SCROLL_WIDTH)
194 #define OL_RNA_COLX (UI_UNIT_X * 15)
195 #define OL_RNA_COL_SIZEX (UI_UNIT_X * 7.5f)
196 #define OL_RNA_COL_SPACEX (UI_UNIT_X * 2.5f)
200 #define SUPPORT_FILTER_OUTLINER(space_outliner_) \
201 (ELEM((space_outliner_)->outlinevis, SO_VIEW_LAYER, SO_OVERRIDES_LIBRARY))
219 #define SEARCHING_OUTLINER(sov) ((sov)->search_flags & SO_SEARCH_RECURSIVE)
222 #define TSELEM_OPEN(telm, sv) \
223 (CHECK_TYPE_INLINE(telm, TreeStoreElem *), \
224 (((telm)->flag & TSE_CLOSED) == 0 || \
225 (SEARCHING_OUTLINER(sv) && ((telm)->flag & TSE_CHILDSEARCH))))
303 const char *propname,
338 bool handle_all_types);
396 bool recurse_selected);
607 bool *r_is_merged_icon,
608 bool *r_is_over_icon);
628 const struct ID *
id);
644 int filter_tselem_flag,
702 static_assert(std::is_base_of_v<AbstractTreeElement, TreeElementT>,
703 "Requested tree-element type must be an AbstractTreeElement");
ATTR_WARN_UNUSED_RESULT const void * element
Base Class For Tree-Displays.
SyclQueue void void size_t num_bytes void
TreeElementT * tree_element_cast(const TreeElement *te)
void OUTLINER_OT_expanded_toggle(struct wmOperatorType *ot)
bool outliner_requires_rebuild_on_select_or_active_change(const struct SpaceOutliner *space_outliner)
void OUTLINER_OT_unhide_all(struct wmOperatorType *ot)
struct TreeElement TreeElement
void outliner_set_coordinates(const struct ARegion *region, const struct SpaceOutliner *space_outliner)
void id_remap_fn(struct bContext *C, struct ReportList *reports, struct Scene *scene, struct TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem, void *user_data)
void outliner_collection_isolate_flag(struct Scene *scene, struct ViewLayer *view_layer, struct LayerCollection *layer_collection, struct Collection *collection, struct PropertyRNA *layer_or_collection_prop, const char *propname, bool value)
void draw_outliner(const struct bContext *C)
void OUTLINER_OT_drivers_delete_selected(struct 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_action_set(struct wmOperatorType *ot)
void outliner_viewcontext_init(const struct bContext *C, TreeViewContext *tvc)
TreeElement * outliner_find_editbone(ListBase *lb, const struct EditBone *ebone)
void OUTLINER_OT_collection_disable_render(struct wmOperatorType *ot)
TreeElement * outliner_find_posechannel(ListBase *lb, const struct bPoseChannel *pchan)
void OUTLINER_OT_collection_indirect_only_clear(struct wmOperatorType *ot)
void OUTLINER_OT_show_one_level(struct wmOperatorType *ot)
void OUTLINER_OT_parent_clear(struct wmOperatorType *ot)
eOLDrawState tree_element_active_state_get(const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
void OUTLINER_OT_collection_holdout_clear(struct wmOperatorType *ot)
void OUTLINER_OT_scroll_page(struct wmOperatorType *ot)
void OUTLINER_OT_highlight_update(struct wmOperatorType *ot)
void OUTLINER_OT_id_operation(struct wmOperatorType *ot)
@ TE_CHILD_NOT_IN_COLLECTION
@ TE_PRETEND_HAS_CHILDREN
void id_delete_tag_fn(struct bContext *C, struct ReportList *reports, struct Scene *scene, struct TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem, void *user_data)
struct TreeViewContext TreeViewContext
void OUTLINER_OT_lib_operation(struct wmOperatorType *ot)
int outliner_context(const struct bContext *C, const char *member, struct bContextDataResult *result)
TreeElement * outliner_find_element_with_flag(const ListBase *lb, short flag)
void outliner_item_select(struct bContext *C, struct SpaceOutliner *space_outliner, struct TreeElement *te, short select_flag)
void OUTLINER_OT_collection_link(struct wmOperatorType *ot)
void OUTLINER_OT_collection_exclude_set(struct wmOperatorType *ot)
void OUTLINER_OT_parent_drop(struct wmOperatorType *ot)
bool outliner_flag_flip(const SpaceOutliner &space_outliner, short flag)
void lib_reload_fn(struct bContext *C, struct ReportList *reports, struct Scene *scene, struct TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem, void *user_data)
float outliner_right_columns_width(const struct SpaceOutliner *space_outliner)
void outliner_do_object_operation_ex(struct bContext *C, struct ReportList *reports, struct Scene *scene, struct SpaceOutliner *space_outliner, struct ListBase *lb, outliner_operation_fn operation_fn, void *user_data, bool recurse_selected)
void outliner_free_tree(ListBase *tree)
bool outliner_item_is_co_within_close_toggle(const TreeElement *te, float view_co_x)
void OUTLINER_OT_collection_isolate(struct wmOperatorType *ot)
void OUTLINER_OT_collection_exclude_clear(struct wmOperatorType *ot)
bool outliner_item_is_co_over_name(const TreeElement *te, float view_co_x)
void OUTLINER_OT_operation(struct wmOperatorType *ot)
void outliner_scroll_view(struct SpaceOutliner *space_outliner, struct ARegion *region, int delta_y)
void OUTLINER_OT_collection_indirect_only_set(struct wmOperatorType *ot)
void OUTLINER_OT_collection_color_tag_set(struct wmOperatorType *ot)
TreeElement * outliner_find_tree_element(ListBase *lb, const TreeStoreElem *store_elem)
void OUTLINER_OT_liboverride_operation(struct wmOperatorType *ot)
int tree_element_id_type_to_index(TreeElement *te)
void tree_element_activate(struct bContext *C, const TreeViewContext *tvc, TreeElement *te, eOLSetState set, bool handle_all_types)
void OUTLINER_OT_collection_enable_render(struct wmOperatorType *ot)
void OUTLINER_OT_scene_drop(struct wmOperatorType *ot)
void OUTLINER_OT_id_delete(struct wmOperatorType *ot)
void outliner_sync_selection(const struct bContext *C, struct SpaceOutliner *space_outliner)
void OUTLINER_OT_show_active(struct wmOperatorType *ot)
int outliner_flag_is_any_test(ListBase *lb, short flag, int curlevel)
void OUTLINER_OT_collection_instance(struct wmOperatorType *ot)
void OUTLINER_OT_collection_hide(struct wmOperatorType *ot)
void outliner_build_tree(struct Main *mainvar, struct Scene *scene, struct ViewLayer *view_layer, struct SpaceOutliner *space_outliner, struct ARegion *region)
void OUTLINER_OT_collection_duplicate(struct wmOperatorType *ot)
void OUTLINER_OT_collection_hierarchy_delete(struct wmOperatorType *ot)
void OUTLINER_OT_item_drag_drop(struct wmOperatorType *ot)
void item_rename_fn(struct bContext *C, struct ReportList *reports, struct Scene *scene, TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem, void *user_data)
bool outliner_has_element_warnings(const SpaceOutliner &space_outliner)
struct TreeElement * outliner_add_collection_recursive(SpaceOutliner *space_outliner, struct Collection *collection, TreeElement *ten)
void OUTLINER_OT_keyingset_remove_selected(struct wmOperatorType *ot)
void outliner_item_mode_toggle(struct bContext *C, TreeViewContext *tvc, TreeElement *te, bool do_extend)
struct Collection * outliner_collection_from_tree_element(const TreeElement *te)
void OUTLINER_OT_collection_holdout_set(struct wmOperatorType *ot)
void OUTLINER_OT_liboverride_troubleshoot_operation(struct wmOperatorType *ot)
void outliner_dropboxes(void)
void OUTLINER_OT_hide(struct wmOperatorType *ot)
void outliner_do_object_operation(struct bContext *C, struct ReportList *reports, struct Scene *scene, struct SpaceOutliner *space_outliner, struct ListBase *lb, outliner_operation_fn operation_fn)
void OUTLINER_OT_id_remap(struct wmOperatorType *ot)
bool outliner_item_is_co_over_name_icons(const TreeElement *te, float view_co_x)
bool outliner_flag_set(const SpaceOutliner &space_outliner, short flag, short set)
void OUTLINER_OT_scene_operation(struct wmOperatorType *ot)
TreeElement * outliner_search_back_te(TreeElement *te, short idcode)
void outliner_cleanup_tree(struct SpaceOutliner *space_outliner)
void OUTLINER_OT_collection_disable(struct wmOperatorType *ot)
void OUTLINER_OT_select_box(struct wmOperatorType *ot)
void outliner_collection_delete(struct bContext *C, struct Main *bmain, struct Scene *scene, struct ReportList *reports, bool do_hierarchy)
void OUTLINER_OT_select_walk(struct wmOperatorType *ot)
bool outliner_is_element_in_view(const TreeElement *te, const struct View2D *v2d)
void OUTLINER_OT_id_paste(struct wmOperatorType *ot)
void OUTLINER_OT_animdata_operation(struct wmOperatorType *ot)
void(* outliner_operation_fn)(struct bContext *C, struct ReportList *, struct Scene *scene, struct TreeElement *, struct TreeStoreElem *, TreeStoreElem *, void *)
void OUTLINER_OT_collection_show(struct wmOperatorType *ot)
void OUTLINER_OT_keyingset_add_selected(struct wmOperatorType *ot)
TreeElement * outliner_find_item_at_y(const SpaceOutliner *space_outliner, const ListBase *tree, float view_co_y)
void OUTLINER_OT_collection_duplicate_linked(struct wmOperatorType *ot)
void outliner_tree_dimensions(struct SpaceOutliner *space_outliner, int *r_width, int *r_height)
struct bPoseChannel * outliner_find_parent_bone(TreeElement *te, TreeElement **r_bone_te)
void outliner_keymap(struct wmKeyConfig *keyconf)
void OUTLINER_OT_select_all(struct wmOperatorType *ot)
TreeTraversalAction outliner_find_selected_objects(struct TreeElement *te, void *customdata)
void OUTLINER_OT_item_rename(struct wmOperatorType *ot)
void OUTLINER_OT_constraint_operation(struct wmOperatorType *ot)
void OUTLINER_OT_data_operation(struct wmOperatorType *ot)
void OUTLINER_OT_object_operation(struct wmOperatorType *ot)
bool outliner_is_collection_tree_element(const TreeElement *te)
TreeElementIcon tree_element_get_icon(TreeStoreElem *tselem, TreeElement *te)
bool outliner_is_element_visible(const TreeElement *te)
void OUTLINER_OT_delete(struct wmOperatorType *ot)
void OUTLINER_OT_collection_drop(struct wmOperatorType *ot)
void OUTLINER_OT_item_openclose(struct wmOperatorType *ot)
void OUTLINER_OT_show_hierarchy(struct wmOperatorType *ot)
void OUTLINER_OT_datastack_drop(struct wmOperatorType *ot)
void OUTLINER_OT_collection_show_inside(struct wmOperatorType *ot)
struct IDsSelectedData IDsSelectedData
void OUTLINER_OT_orphans_purge(struct wmOperatorType *ot)
void outliner_free_tree_element(TreeElement *element, ListBase *parent_subtree)
void OUTLINER_OT_lib_reload(struct wmOperatorType *ot)
void OUTLINER_OT_collection_enable(struct wmOperatorType *ot)
void OUTLINER_OT_modifier_operation(struct wmOperatorType *ot)
TreeElement * outliner_find_id(struct SpaceOutliner *space_outliner, ListBase *lb, const struct ID *id)
bool outliner_item_is_co_over_icon(const TreeElement *te, float view_co_x)
bool outliner_shows_mode_column(const SpaceOutliner &space_outliner)
void OUTLINER_OT_lib_relocate(struct wmOperatorType *ot)
TreeTraversalAction(* TreeTraversalFunc)(struct TreeElement *te, void *customdata)
TreeElement * outliner_find_tse(struct SpaceOutliner *space_outliner, const TreeStoreElem *tse)
void outliner_item_openclose(TreeElement *te, bool open, bool toggle_all)
TreeElement * outliner_find_parent_element(ListBase *lb, TreeElement *parent_te, const TreeElement *child_te)
struct ID * outliner_search_back(TreeElement *te, short idcode)
void OUTLINER_OT_item_activate(struct wmOperatorType *ot)
struct TreeElementIcon TreeElementIcon
bool outliner_is_co_within_mode_column(SpaceOutliner *space_outliner, const float view_mval[2])
void outliner_operatortypes(void)
void OUTLINER_OT_material_drop(struct wmOperatorType *ot)
eOLDrawState tree_element_type_active_state_get(const struct bContext *C, const struct TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
void OUTLINER_OT_collection_hide_inside(struct wmOperatorType *ot)
void OUTLINER_OT_id_copy(struct wmOperatorType *ot)
void tree_element_type_active_set(struct bContext *C, const TreeViewContext *tvc, TreeElement *te, TreeStoreElem *tselem, eOLSetState set, bool recursive)
void OUTLINER_OT_drivers_add_selected(struct 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)
TreeTraversalAction outliner_find_selected_collections(struct TreeElement *te, void *customdata)
void OUTLINER_OT_collection_objects_deselect(struct wmOperatorType *ot)
void OUTLINER_OT_collection_new(struct wmOperatorType *ot)
void outliner_tag_redraw_avoid_rebuild_on_open_change(const struct SpaceOutliner *space_outliner, struct ARegion *region)
void lib_relocate_fn(struct bContext *C, struct ReportList *reports, struct Scene *scene, struct TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem, void *user_data)
void merged_element_search_menu_invoke(struct bContext *C, TreeElement *parent_te, TreeElement *activate_te)
void OUTLINER_OT_collection_objects_select(struct wmOperatorType *ot)
struct ListBase selected_array
std::unique_ptr< outliner::AbstractTreeDisplay > tree_display
SpaceOutliner_Runtime()=default
struct TreeElement * parent
std::unique_ptr< outliner::AbstractTreeElement > abstract_element
TreeStoreElem * store_elem
struct TreeElement * prev
struct TreeElement * next
struct ViewLayer * view_layer