Blender  V3.3
outliner_intern.hh
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2008 Blender Foundation. All rights reserved. */
3 
8 #pragma once
9 
10 #include <memory>
11 
12 #include "RNA_types.h"
13 
14 /* Needed for `tree_element_cast()`. */
15 #include "tree/tree_element.hh"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 /* internal exports only */
22 
23 struct ARegion;
24 struct EditBone;
25 struct ID;
26 struct ListBase;
27 struct Main;
28 struct Object;
29 struct Scene;
30 struct TreeElement;
31 struct TreeStoreElem;
32 struct ViewLayer;
33 struct bContext;
34 struct bContextDataResult;
35 struct bPoseChannel;
36 struct View2D;
37 struct wmKeyConfig;
38 struct wmOperatorType;
39 
43 } // namespace blender::ed::outliner
44 
46 
50  std::unique_ptr<outliner::AbstractTreeDisplay> tree_display;
51 
54  struct GHash *treehash;
55 
56  SpaceOutliner_Runtime() = default;
60 };
61 
62 typedef enum TreeElementInsertType {
67 
68 typedef enum TreeTraversalAction {
76 
77 typedef TreeTraversalAction (*TreeTraversalFunc)(struct TreeElement *te, void *customdata);
78 
79 typedef struct TreeElement {
80  struct TreeElement *next, *prev, *parent;
81 
88  std::unique_ptr<outliner::AbstractTreeElement> abstract_element;
89 
91  int xs, ys; /* Do selection. */
92  TreeStoreElem *store_elem; /* Element in tree store. */
93  short flag; /* Flag for non-saved stuff. */
94  short index; /* Index for data arrays. */
95  short idcode; /* From TreeStore id. */
96  short xend; /* Width of item display, for select. */
97  const char *name;
98  void *directdata; /* Armature Bones, Base, ... */
100 
101 typedef struct TreeElementIcon {
102  struct ID *drag_id, *drag_parent;
103  int icon;
105 
106 #define TREESTORE_ID_TYPE(_id) \
107  (ELEM(GS((_id)->name), \
108  ID_SCE, \
109  ID_LI, \
110  ID_OB, \
111  ID_ME, \
112  ID_CU_LEGACY, \
113  ID_MB, \
114  ID_NT, \
115  ID_MA, \
116  ID_TE, \
117  ID_IM, \
118  ID_LT, \
119  ID_LA, \
120  ID_CA) || \
121  ELEM(GS((_id)->name), \
122  ID_KE, \
123  ID_WO, \
124  ID_SPK, \
125  ID_GR, \
126  ID_AR, \
127  ID_AC, \
128  ID_BR, \
129  ID_PA, \
130  ID_GD, \
131  ID_LS, \
132  ID_LP, \
133  ID_CV, \
134  ID_PT, \
135  ID_VO, \
136  ID_SIM) || /* Only in 'blendfile' mode ... :/ */ \
137  ELEM(GS((_id)->name), \
138  ID_SCR, \
139  ID_WM, \
140  ID_TXT, \
141  ID_VF, \
142  ID_SO, \
143  ID_CF, \
144  ID_PAL, \
145  ID_MC, \
146  ID_WS, \
147  ID_MSK, \
148  ID_PC))
149 
150 /* TreeElement->flag */
151 enum {
152  TE_ACTIVE = (1 << 0),
153  /* Closed items display their children as icon within the row. TE_ICONROW is for
154  * these child-items that are visible but only within the row of the closed parent. */
155  TE_ICONROW = (1 << 1),
160  TE_FREE_NAME = (1 << 3),
161  TE_DRAGGING = (1 << 4),
163  /* Child elements of the same type in the icon-row are drawn merged as one icon.
164  * This flag is set for an element that is part of these merged child icons. */
165  TE_ICONROW_MERGED = (1 << 7),
166 };
167 
168 /* button events */
169 #define OL_NAMEBUTTON 1
170 
171 typedef enum {
172  OL_DRAWSEL_NONE = 0, /* inactive (regular black text) */
173  OL_DRAWSEL_NORMAL = 1, /* active object (draws white text) */
174  OL_DRAWSEL_ACTIVE = 2, /* active obdata (draws a circle around the icon) */
175 } eOLDrawState;
176 
177 typedef enum {
178  OL_SETSEL_NONE = 0, /* don't change the selection state */
179  OL_SETSEL_NORMAL = 1, /* select the item */
180  OL_SETSEL_EXTEND = 2, /* select the item and extend (also toggles selection) */
181 } eOLSetState;
182 
183 /* get TreeStoreElem associated with a TreeElement
184  * < a: (TreeElement) tree element to find stored element for
185  */
186 #define TREESTORE(a) ((a)->store_elem)
187 
188 /* size constants */
189 #define OL_Y_OFFSET 2
190 
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)
193 
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)
197 
198 /* The outliner display modes that support the filter system.
199  * NOTE: keep it synced with `space_outliner.py`. */
200 #define SUPPORT_FILTER_OUTLINER(space_outliner_) \
201  (ELEM((space_outliner_)->outlinevis, SO_VIEW_LAYER, SO_OVERRIDES_LIBRARY))
202 
203 /* Outliner Searching --
204  *
205  * Are we looking for something in the outliner?
206  * If so finding matches in child items makes it more useful
207  *
208  * - We want to flag parents to act as being open to filter child matches
209  * - and also flag matches so we can highlight them
210  * - Flags are stored in TreeStoreElem->flag
211  * - Flag options defined in DNA_outliner_types.h
212  * - SO_SEARCH_RECURSIVE defined in DNA_space_types.h
213  *
214  * - NOT in data-blocks view - searching all data-blocks takes way too long
215  * to be useful
216  * - not searching into RNA items helps but isn't the complete solution
217  */
218 
219 #define SEARCHING_OUTLINER(sov) ((sov)->search_flags & SO_SEARCH_RECURSIVE)
220 
221 /* is the current element open? if so we also show children */
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))))
226 
231 typedef struct TreeViewContext {
232  /* Scene level. */
233  struct Scene *scene;
235 
236  /* Object level. */
245 
246 typedef enum TreeItemSelectAction {
247  OL_ITEM_DESELECT = 0, /* Deselect the item */
248  OL_ITEM_SELECT = (1 << 0), /* Select the item */
249  OL_ITEM_SELECT_DATA = (1 << 1), /* Select object data */
250  OL_ITEM_ACTIVATE = (1 << 2), /* Activate the item */
251  OL_ITEM_EXTEND = (1 << 3), /* Extend the current selection */
252  OL_ITEM_RECURSIVE = (1 << 4), /* Select recursively */
254 
255 /* outliner_tree.c ----------------------------------------------- */
256 
258 void outliner_cleanup_tree(struct SpaceOutliner *space_outliner);
266 
270 void outliner_build_tree(struct Main *mainvar,
271  struct Scene *scene,
272  struct ViewLayer *view_layer,
273  struct SpaceOutliner *space_outliner,
274  struct ARegion *region);
275 
277  struct Collection *collection,
278  TreeElement *ten);
279 
281  const struct SpaceOutliner *space_outliner);
282 
283 typedef struct IDsSelectedData {
284  struct ListBase selected_array;
286 
289 
290 /* outliner_draw.c ---------------------------------------------- */
291 
292 void draw_outliner(const struct bContext *C);
293 
294 void outliner_tree_dimensions(struct SpaceOutliner *space_outliner, int *r_width, int *r_height);
295 
297 
299  struct ViewLayer *view_layer,
300  struct LayerCollection *layer_collection,
301  struct Collection *collection,
302  struct PropertyRNA *layer_or_collection_prop,
303  const char *propname,
304  bool value);
305 
313 
314 /* outliner_select.c -------------------------------------------- */
319  const TreeViewContext *tvc,
320  TreeElement *te,
321  TreeStoreElem *tselem,
322  eOLSetState set,
323  bool recursive);
328  const struct TreeViewContext *tvc,
329  const TreeElement *te,
330  const TreeStoreElem *tselem);
334 void tree_element_activate(struct bContext *C,
335  const TreeViewContext *tvc,
336  TreeElement *te,
337  eOLSetState set,
338  bool handle_all_types);
340  const TreeElement *te,
341  const TreeStoreElem *tselem);
342 
344 
348 void outliner_item_select(struct bContext *C,
349  struct SpaceOutliner *space_outliner,
350  struct TreeElement *te,
351  short select_flag);
352 
356 bool outliner_item_is_co_over_name_icons(const TreeElement *te, float view_co_x);
357 bool outliner_item_is_co_over_icon(const TreeElement *te, float view_co_x);
361 bool outliner_item_is_co_over_name(const TreeElement *te, float view_co_x);
365 bool outliner_item_is_co_within_close_toggle(const TreeElement *te, float view_co_x);
366 bool outliner_is_co_within_mode_column(SpaceOutliner *space_outliner, const float view_mval[2]);
367 
372  TreeViewContext *tvc,
373  TreeElement *te,
374  bool do_extend);
375 
376 /* outliner_edit.c ---------------------------------------------- */
378  struct ReportList *,
379  struct Scene *scene,
380  struct TreeElement *,
381  struct TreeStoreElem *,
382  TreeStoreElem *,
383  void *);
384 
390  struct ReportList *reports,
391  struct Scene *scene,
392  struct SpaceOutliner *space_outliner,
393  struct ListBase *lb,
394  outliner_operation_fn operation_fn,
395  void *user_data,
396  bool recurse_selected);
398  struct ReportList *reports,
399  struct Scene *scene,
400  struct SpaceOutliner *space_outliner,
401  struct ListBase *lb,
402  outliner_operation_fn operation_fn);
403 
404 int outliner_flag_is_any_test(ListBase *lb, short flag, int curlevel);
409 extern "C++" {
410 bool outliner_flag_set(const SpaceOutliner &space_outliner, short flag, short set);
411 bool outliner_flag_set(const ListBase &lb, short flag, short set);
412 bool outliner_flag_flip(const SpaceOutliner &space_outliner, short flag);
413 bool outliner_flag_flip(const ListBase &lb, short flag);
414 }
415 
416 void item_rename_fn(struct bContext *C,
417  struct ReportList *reports,
418  struct Scene *scene,
419  TreeElement *te,
420  struct TreeStoreElem *tsep,
421  struct TreeStoreElem *tselem,
422  void *user_data);
424  struct ReportList *reports,
425  struct Scene *scene,
426  struct TreeElement *te,
427  struct TreeStoreElem *tsep,
428  struct TreeStoreElem *tselem,
429  void *user_data);
430 void lib_reload_fn(struct bContext *C,
431  struct ReportList *reports,
432  struct Scene *scene,
433  struct TreeElement *te,
434  struct TreeStoreElem *tsep,
435  struct TreeStoreElem *tselem,
436  void *user_data);
437 
439  struct ReportList *reports,
440  struct Scene *scene,
441  struct TreeElement *te,
442  struct TreeStoreElem *tsep,
443  struct TreeStoreElem *tselem,
444  void *user_data);
445 void id_remap_fn(struct bContext *C,
446  struct ReportList *reports,
447  struct Scene *scene,
448  struct TreeElement *te,
449  struct TreeStoreElem *tsep,
450  struct TreeStoreElem *tselem,
451  void *user_data);
452 
456 void outliner_set_coordinates(const struct ARegion *region,
457  const struct SpaceOutliner *space_outliner);
458 
462 void outliner_item_openclose(TreeElement *te, bool open, bool toggle_all);
463 
464 /* outliner_dragdrop.c */
465 
469 void outliner_dropboxes(void);
470 
478 
479 /* ...................................................... */
480 
482 
488 
490 
494 
497 
500 
502 
505 
508 
510 
511 /* outliner_query.cc ---------------------------------------------- */
512 
513 bool outliner_shows_mode_column(const SpaceOutliner &space_outliner);
514 bool outliner_has_element_warnings(const SpaceOutliner &space_outliner);
515 
516 /* outliner_tools.c ---------------------------------------------- */
517 
519  TreeElement *parent_te,
520  TreeElement *activate_te);
521 
522 /* Menu only! Calls other operators */
523 
539 void OUTLINER_OT_delete(struct wmOperatorType *ot);
540 
541 /* ---------------------------------------------------------------- */
542 
543 /* outliner_ops.c */
544 
545 void outliner_operatortypes(void);
546 void outliner_keymap(struct wmKeyConfig *keyconf);
547 
548 /* outliner_collections.c */
549 
553  struct Main *bmain,
554  struct Scene *scene,
555  struct ReportList *reports,
556  bool do_hierarchy);
557 
572 
582 void OUTLINER_OT_hide(struct wmOperatorType *ot);
584 
586 
587 /* outliner_utils.c ---------------------------------------------- */
588 
590 
595 TreeElement *outliner_find_item_at_y(const SpaceOutliner *space_outliner,
596  const ListBase *tree,
597  float view_co_y);
605  TreeElement *parent_te,
606  float view_co_x,
607  bool *r_is_merged_icon,
608  bool *r_is_over_icon);
612 TreeElement *outliner_find_tse(struct SpaceOutliner *space_outliner, const TreeStoreElem *tse);
621  TreeElement *parent_te,
622  const TreeElement *child_te);
627  ListBase *lb,
628  const struct ID *id);
632 struct ID *outliner_search_back(TreeElement *te, short idcode);
641 bool outliner_tree_traverse(const SpaceOutliner *space_outliner,
642  ListBase *tree,
643  int filter_te_flag,
644  int filter_tselem_flag,
645  TreeTraversalFunc func,
646  void *customdata);
647 float outliner_right_columns_width(const struct SpaceOutliner *space_outliner);
661 bool outliner_is_element_in_view(const TreeElement *te, const struct View2D *v2d);
665 void outliner_scroll_view(struct SpaceOutliner *space_outliner,
666  struct ARegion *region,
667  int delta_y);
674  struct ARegion *region);
675 
676 /* outliner_sync.c ---------------------------------------------- */
677 
681 void outliner_sync_selection(const struct bContext *C, struct SpaceOutliner *space_outliner);
682 
683 /* outliner_context.c ------------------------------------------- */
684 
685 int outliner_context(const struct bContext *C,
686  const char *member,
687  struct bContextDataResult *result);
688 
689 #ifdef __cplusplus
690 }
691 #endif
692 
693 namespace blender::ed::outliner {
694 
700 template<typename TreeElementT> TreeElementT *tree_element_cast(const TreeElement *te)
701 {
702  static_assert(std::is_base_of_v<AbstractTreeElement, TreeElementT>,
703  "Requested tree-element type must be an AbstractTreeElement");
704  return dynamic_cast<TreeElementT *>(te->abstract_element.get());
705 }
706 
707 } // namespace blender::ed::outliner
#define C
Definition: RandGen.cpp:25
ATTR_WARN_UNUSED_RESULT const void * element
Base Class For Tree-Displays.
Definition: tree_display.hh:62
Scene scene
void * user_data
SyclQueue void void size_t num_bytes void
void * tree
TreeElementT * tree_element_cast(const TreeElement *te)
void OUTLINER_OT_expanded_toggle(struct wmOperatorType *ot)
TreeElementInsertType
@ TE_INSERT_AFTER
@ TE_INSERT_BEFORE
@ TE_INSERT_INTO
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)
TreeItemSelectAction
@ OL_ITEM_EXTEND
@ OL_ITEM_RECURSIVE
@ OL_ITEM_DESELECT
@ OL_ITEM_SELECT
@ OL_ITEM_ACTIVATE
@ OL_ITEM_SELECT_DATA
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_FREE_NAME
@ TE_ICONROW_MERGED
@ TE_ICONROW
@ TE_PRETEND_HAS_CHILDREN
@ TE_ACTIVE
@ TE_DRAGGING
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)
eOLSetState
@ OL_SETSEL_NORMAL
@ OL_SETSEL_EXTEND
@ OL_SETSEL_NONE
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)
eOLDrawState
@ OL_DRAWSEL_ACTIVE
@ OL_DRAWSEL_NORMAL
@ OL_DRAWSEL_NONE
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)
TreeTraversalAction
@ TRAVERSE_SKIP_CHILDS
@ TRAVERSE_BREAK
@ TRAVERSE_CONTINUE
struct TreeElementIcon TreeElementIcon
bool outliner_is_co_within_mode_column(SpaceOutliner *space_outliner, const float view_mval[2])
void outliner_operatortypes(void)
Definition: outliner_ops.cc:18
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)
Definition: DNA_ID.h:368
short flag
Definition: DNA_ID.h:383
struct ListBase selected_array
Definition: BKE_main.h:121
std::unique_ptr< outliner::AbstractTreeDisplay > tree_display
SpaceOutliner_Runtime()=default
struct GHash * treehash
struct ID * drag_id
struct ID * drag_parent
struct TreeElement * parent
std::unique_ptr< outliner::AbstractTreeElement > abstract_element
ListBase subtree
TreeStoreElem * store_elem
struct TreeElement * prev
const char * name
struct TreeElement * next
struct Scene * scene
struct ViewLayer * view_layer
wmOperatorType * ot
Definition: wm_files.c:3479