Blender V5.0
outliner_intern.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include <memory>
12
13#include "DNA_listBase.h"
14
15#include "BLI_function_ref.hh"
16
17#include "RNA_types.hh"
18
19/* Needed for `tree_element_cast()`. */
20#include "tree/tree_element.hh"
21
22/* internal exports only */
23
24struct ARegion;
25struct Collection;
26struct EditBone;
27struct ID;
28struct LayerCollection;
29struct ListBase;
30struct Main;
31struct Object;
32struct Scene;
33struct TreeStoreElem;
34struct ViewLayer;
35struct bContext;
37struct bPoseChannel;
38struct View2D;
39struct wmKeyConfig;
40struct wmOperatorType;
41struct WorkSpace;
42
44class TreeHash;
45}
46
47namespace blender::ed::outliner {
48
51
52namespace treehash = blender::bke::outliner::treehash;
53
54struct TreeElement;
55
59 std::unique_ptr<AbstractTreeDisplay> tree_display;
60
61 /* Hash table for tree-store elements, using `(id, type, index)` as key. */
62 std::unique_ptr<treehash::TreeHash> tree_hash;
63
68};
69
75
84
85using TreeTraversalFunc = TreeTraversalAction (*)(TreeElement *te, void *customdata);
86
89
96 std::unique_ptr<AbstractTreeElement> abstract_element;
97
99 int xs, ys; /* Do selection. */
100 TreeStoreElem *store_elem; /* Element in tree store. */
101 short flag; /* Flag for non-saved stuff. */
102 short index; /* Index for data arrays. */
103 short idcode; /* From TreeStore id. */
104 short xend; /* Width of item display, for select. */
105 const char *name;
106 void *directdata; /* Armature Bones, Base, ... */
107};
108
113
114#define TREESTORE_ID_TYPE(_id) \
115 (ELEM(GS((_id)->name), \
116 ID_SCE, \
117 ID_LI, \
118 ID_OB, \
119 ID_ME, \
120 ID_CU_LEGACY, \
121 ID_MB, \
122 ID_NT, \
123 ID_MA, \
124 ID_TE, \
125 ID_IM, \
126 ID_LT, \
127 ID_LA, \
128 ID_CA) || \
129 ELEM(GS((_id)->name), \
130 ID_KE, \
131 ID_WO, \
132 ID_SPK, \
133 ID_GR, \
134 ID_AR, \
135 ID_AC, \
136 ID_BR, \
137 ID_PA, \
138 ID_GD_LEGACY, \
139 ID_LS, \
140 ID_LP, \
141 ID_CV, \
142 ID_PT, \
143 ID_VO, \
144 ID_GP) || /* Only in blend-file mode ... :/ */ \
145 ELEM(GS((_id)->name), \
146 ID_SCR, \
147 ID_WM, \
148 ID_TXT, \
149 ID_VF, \
150 ID_SO, \
151 ID_CF, \
152 ID_PAL, \
153 ID_MC, \
154 ID_WS, \
155 ID_MSK, \
156 ID_PC))
157
158/* TreeElement->flag */
159enum {
160 TE_ACTIVE = (1 << 0),
161 /* Closed items display their children as icon within the row. TE_ICONROW is for
162 * these child-items that are visible but only within the row of the closed parent. */
163 TE_ICONROW = (1 << 1),
168 TE_FREE_NAME = (1 << 3),
169 TE_DRAGGING = (1 << 4),
171 /* Child elements of the same type in the icon-row are drawn merged as one icon.
172 * This flag is set for an element that is part of these merged child icons. */
174};
175
176/* button events */
177#define OL_NAMEBUTTON 1
178
180 OL_DRAWSEL_NONE = 0, /* inactive (regular black text) */
181 OL_DRAWSEL_NORMAL = 1, /* active object (draws white text) */
182 OL_DRAWSEL_ACTIVE = 2, /* active obdata (draws a circle around the icon) */
183};
184
186 OL_SETSEL_NONE = 0, /* don't change the selection state */
187 OL_SETSEL_NORMAL = 1, /* select the item */
188 OL_SETSEL_EXTEND = 2, /* select the item and extend (also toggles selection) */
189};
190
191/* get TreeStoreElem associated with a TreeElement
192 * < a: (TreeElement) tree element to find stored element for
193 */
194#define TREESTORE(a) ((a)->store_elem)
195
196/* size constants */
197#define OL_Y_OFFSET 2
198
199#define OL_TOG_USER_BUTS_USERS (UI_UNIT_X * 1.2f + V2D_SCROLL_WIDTH)
200
201#define OL_RNA_COLX (UI_UNIT_X * 15)
202#define OL_RNA_COL_SIZEX (UI_UNIT_X * 7.5f)
203#define OL_RNA_COL_SPACEX (UI_UNIT_X * 2.5f)
204
205/* The outliner display modes that support the filter system.
206 * NOTE: keep it synced with `space_outliner.py`. */
207#define SUPPORT_FILTER_OUTLINER(space_outliner_) \
208 (ELEM((space_outliner_)->outlinevis, SO_VIEW_LAYER, SO_OVERRIDES_LIBRARY))
209
210/* Outliner Searching --
211 *
212 * Are we looking for something in the outliner?
213 * If so finding matches in child items makes it more useful
214 *
215 * - We want to flag parents to act as being open to filter child matches
216 * - and also flag matches so we can highlight them
217 * - Flags are stored in TreeStoreElem->flag
218 * - Flag options defined in DNA_outliner_types.h
219 * - SO_SEARCH_RECURSIVE defined in DNA_space_types.h
220 *
221 * - NOT in data-blocks view - searching all data-blocks takes way too long
222 * to be useful
223 * - not searching into RNA items helps but isn't the complete solution
224 */
225
226#define SEARCHING_OUTLINER(sov) ((sov)->search_flags & SO_SEARCH_RECURSIVE)
227
228/* is the current element open? if so we also show children */
229#define TSELEM_OPEN(telm, sv) \
230 (CHECK_TYPE_INLINE(telm, TreeStoreElem *), \
231 (((telm)->flag & TSE_CLOSED) == 0 || \
232 (SEARCHING_OUTLINER(sv) && ((telm)->flag & TSE_CHILDSEARCH))))
233
239 /* Workspace. */
241
242 /* Scene level. */
246
247 /* Object level. */
255};
256
258 OL_ITEM_DESELECT = 0, /* Deselect the item */
259 OL_ITEM_SELECT = (1 << 0), /* Select the item */
260 OL_ITEM_SELECT_DATA = (1 << 1), /* Select object data */
261 OL_ITEM_ACTIVATE = (1 << 2), /* Activate the item */
262 OL_ITEM_EXTEND = (1 << 3), /* Extend the current selection */
263 OL_ITEM_RECURSIVE = (1 << 4), /* Select recursively */
264};
265
266/* `outliner_tree.cc` */
267
269void outliner_cleanup_tree(SpaceOutliner *space_outliner);
276void outliner_free_tree_element(TreeElement *element, ListBase *parent_subtree);
277
281void outliner_build_tree(Main *mainvar,
282 WorkSpace *workspace,
283 Scene *scene,
284 ViewLayer *view_layer,
285 SpaceOutliner *space_outliner,
286 ARegion *region);
287
288TreeElement *outliner_add_collection_recursive(SpaceOutliner *space_outliner,
289 Collection *collection,
290 TreeElement *ten);
291
293
297
300
301/* `outliner_draw.cc` */
302
306void draw_outliner(const bContext *C, bool do_rebuild);
307
308void outliner_tree_dimensions(SpaceOutliner *space_outliner, int *r_width, int *r_height);
309
311
313 ViewLayer *view_layer,
314 LayerCollection *layer_collection,
315 Collection *collection,
316 PropertyRNA *layer_or_collection_prop,
317 const char *propname,
318 bool value);
319
327
328/* `outliner_select.cc` */
333 const TreeViewContext &tvc,
334 TreeElement *te,
335 TreeStoreElem *tselem,
336 eOLSetState set,
337 bool recursive);
342 const TreeElement *te,
343 const TreeStoreElem *tselem);
348 const TreeViewContext &tvc,
349 TreeElement *te,
350 eOLSetState set,
351 bool handle_all_types);
353 const TreeElement *te,
354 const TreeStoreElem *tselem);
355
357
362 SpaceOutliner *space_outliner,
363 TreeElement *te,
364 short select_flag);
365
369bool outliner_item_is_co_over_name_icons(const TreeElement *te, float view_co_x);
370bool outliner_item_is_co_over_icon(const TreeElement *te, float view_co_x);
374bool outliner_item_is_co_over_name(const TreeElement *te, float view_co_x);
378bool outliner_item_is_co_within_close_toggle(const TreeElement *te, float view_co_x);
379bool outliner_is_co_within_mode_column(SpaceOutliner *space_outliner, const float view_mval[2]);
380
385 const TreeViewContext &tvc,
386 TreeElement *te,
387 bool do_extend);
388
389/* `outliner_edit.cc` */
391 ReportList *reports,
392 Scene *scene,
393 TreeElement *te,
394 TreeStoreElem *tsep,
395 TreeStoreElem *tselem)>;
396
402 ReportList *reports,
403 Scene *scene,
404 SpaceOutliner *space_outliner,
405 ListBase *lb,
406 outliner_operation_fn operation_fn,
407 bool recurse_selected);
409 ReportList *reports,
410 Scene *scene,
411 SpaceOutliner *space_outliner,
412 ListBase *lb,
413 outliner_operation_fn operation_fn);
414
415int outliner_flag_is_any_test(ListBase *lb, short flag, int curlevel);
420bool outliner_flag_set(const SpaceOutliner &space_outliner, short flag, short set);
421bool outliner_flag_set(const ListBase &lb, short flag, short set);
422bool outliner_flag_flip(const SpaceOutliner &space_outliner, short flag);
423bool outliner_flag_flip(const ListBase &lb, short flag);
424
426 ReportList *reports,
427 Scene *scene,
428 TreeElement *te,
429 TreeStoreElem *tsep,
430 TreeStoreElem *tselem);
432 ReportList *reports,
433 Scene *scene,
434 TreeElement *te,
435 TreeStoreElem *tsep,
436 TreeStoreElem *tselem);
438 ReportList *reports,
439 Scene *scene,
440 TreeElement *te,
441 TreeStoreElem *tsep,
442 TreeStoreElem *tselem);
443
445 ReportList *reports,
446 Scene *scene,
447 TreeElement *te,
448 TreeStoreElem *tsep,
449 TreeStoreElem *tselem);
451 ReportList *reports,
452 Scene *scene,
453 TreeElement *te,
454 TreeStoreElem *tsep,
455 TreeStoreElem *tselem);
456
460void outliner_set_coordinates(const ARegion *region, const SpaceOutliner *space_outliner);
461
465void outliner_item_openclose(TreeElement *te, bool open, bool toggle_all);
466
467/* `outliner_dragdrop.cc` */
468
472void outliner_dropboxes();
473
481
482/* ...................................................... */
483
485
491
494
498
501
506
508
511
514
517
518/* `outliner_query.cc` */
519
524bool outliner_shows_mode_column(const SpaceOutliner &space_outliner);
525bool outliner_has_element_warnings(const SpaceOutliner &space_outliner);
526
527/* `outliner_tools.cc` */
528
530 TreeElement *parent_te,
531 TreeElement *activate_te);
532
533/* Menu only! Calls other operators */
534
551
552/* `outliner_ops.cc` */
553
555void outliner_keymap(wmKeyConfig *keyconf);
556
557/* `outliner_collections.cc` */
558
562 bContext *C, Main *bmain, Scene *scene, ReportList *reports, bool do_hierarchy);
563
578
590
592
593/* `outliner_utils.cc` */
594
596
602 const ListBase *tree,
603 float view_co_y);
611 TreeElement *parent_te,
612 float view_co_x,
613 bool *r_is_merged_icon,
614 bool *r_is_over_icon);
623 TreeElement *parent_te,
624 const TreeElement *child_te);
628TreeElement *outliner_find_id(SpaceOutliner *space_outliner, ListBase *lb, const ID *id);
632ID *outliner_search_back(TreeElement *te, short idcode);
641bool outliner_tree_traverse(const SpaceOutliner *space_outliner,
642 ListBase *tree,
643 int filter_te_flag,
644 int filter_tselem_flag,
646 void *customdata);
647float outliner_right_columns_width(const SpaceOutliner *space_outliner);
661bool outliner_is_element_in_view(const TreeElement *te, const View2D *v2d);
665void outliner_scroll_view(SpaceOutliner *space_outliner, ARegion *region, int delta_y);
672 ARegion *region);
673
674/* `outliner_sync.cc` */
675
680 const TreeViewContext &tvc,
681 SpaceOutliner *space_outliner);
682
683/* `outliner_context.cc` */
684
686 const char *member,
688
694template<typename TreeElementT> TreeElementT *tree_element_cast(const TreeElement *te)
695{
696 static_assert(std::is_base_of_v<AbstractTreeElement, TreeElementT>,
697 "Requested tree-element type must be an AbstractTreeElement");
698 return dynamic_cast<TreeElementT *>(te->abstract_element.get());
699}
700
701} // namespace blender::ed::outliner
These structs are the foundation for all linked lists in the library system.
#define C
Definition RandGen.cpp:29
ATTR_WARN_UNUSED_RESULT const void * element
Base Class For Tree-Displays.
KDTree_3d * tree
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)
eOLDrawState tree_element_type_active_state_get(const TreeViewContext &tvc, const TreeElement *te, const TreeStoreElem *tselem)
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_id_linked_relocate(wmOperatorType *ot)
void OUTLINER_OT_lib_relocate(wmOperatorType *ot)
TreeElement * outliner_find_id(SpaceOutliner *space_outliner, ListBase *lb, const ID *id)
blender::FunctionRef< void(bContext *C, ReportList *reports, Scene *scene, TreeElement *te, TreeStoreElem *tsep, TreeStoreElem *tselem)> outliner_operation_fn
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 tree_element_activate(bContext *C, const TreeViewContext &tvc, TreeElement *te, eOLSetState set, bool handle_all_types)
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_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)
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_item_mode_toggle(bContext *C, const TreeViewContext &tvc, TreeElement *te, bool do_extend)
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)
int tree_element_id_type_to_index(TreeElement *te)
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_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)
void outliner_sync_selection(const bContext *C, const TreeViewContext &tvc, SpaceOutliner *space_outliner)
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_OT_liboverride_troubleshoot_operation(wmOperatorType *ot)
void tree_element_type_active_set(bContext *C, const TreeViewContext &tvc, TreeElement *te, TreeStoreElem *tselem, eOLSetState set, bool recursive)
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)
eOLDrawState tree_element_active_state_get(const TreeViewContext &tvc, const TreeElement *te, const TreeStoreElem *tselem)
void outliner_build_tree(Main *mainvar, WorkSpace *workspace, Scene *scene, ViewLayer *view_layer, SpaceOutliner *space_outliner, ARegion *region)
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 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_OT_orphans_purge(wmOperatorType *ot)
void OUTLINER_OT_collection_enable_render(wmOperatorType *ot)
Definition DNA_ID.h:414
std::unique_ptr< treehash::TreeHash > tree_hash
std::unique_ptr< AbstractTreeDisplay > tree_display
std::unique_ptr< AbstractTreeElement > abstract_element
wmOperatorType * ot
Definition wm_files.cc:4237
uint8_t flag
Definition wm_window.cc:145