Blender  V3.3
Functions
outliner_utils.cc File Reference
#include <cstring>
#include "BLI_listbase.h"
#include "BLI_utildefines.h"
#include "DNA_action_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "BKE_armature.h"
#include "BKE_context.h"
#include "BKE_layer.h"
#include "BKE_object.h"
#include "BKE_outliner_treehash.h"
#include "ED_outliner.h"
#include "ED_screen.h"
#include "UI_interface.h"
#include "UI_view2d.h"
#include "outliner_intern.hh"
#include "tree/tree_display.hh"
#include "tree/tree_iterator.hh"

Go to the source code of this file.

Functions

TreeElementoutliner_find_item_at_y (const SpaceOutliner *space_outliner, const ListBase *tree, float view_co_y)
 
static TreeElementoutliner_find_item_at_x_in_row_recursive (const TreeElement *parent_te, float view_co_x, bool *r_is_merged_icon)
 
TreeElementoutliner_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)
 
TreeElementoutliner_find_tree_element (ListBase *lb, const TreeStoreElem *store_elem)
 
TreeElementoutliner_find_parent_element (ListBase *lb, TreeElement *parent_te, const TreeElement *child_te)
 
TreeElementoutliner_find_tse (SpaceOutliner *space_outliner, const TreeStoreElem *tse)
 
TreeElementoutliner_find_id (SpaceOutliner *space_outliner, ListBase *lb, const ID *id)
 
TreeElementoutliner_find_posechannel (ListBase *lb, const bPoseChannel *pchan)
 
TreeElementoutliner_find_editbone (ListBase *lb, const EditBone *ebone)
 
TreeElementoutliner_search_back_te (TreeElement *te, short idcode)
 
IDoutliner_search_back (TreeElement *te, short idcode)
 
bool outliner_tree_traverse (const SpaceOutliner *space_outliner, ListBase *tree, int filter_te_flag, int filter_tselem_flag, TreeTraversalFunc func, void *customdata)
 
float outliner_right_columns_width (const SpaceOutliner *space_outliner)
 
TreeElementoutliner_find_element_with_flag (const ListBase *lb, short flag)
 
bool outliner_is_element_visible (const TreeElement *te)
 
bool outliner_is_element_in_view (const TreeElement *te, const View2D *v2d)
 
bool outliner_item_is_co_over_name_icons (const TreeElement *te, float view_co_x)
 
bool outliner_item_is_co_over_icon (const TreeElement *te, float view_co_x)
 
bool outliner_item_is_co_over_name (const TreeElement *te, float view_co_x)
 
bool outliner_item_is_co_within_close_toggle (const TreeElement *te, float view_co_x)
 
void outliner_scroll_view (SpaceOutliner *space_outliner, ARegion *region, int delta_y)
 
void outliner_tag_redraw_avoid_rebuild_on_open_change (const SpaceOutliner *space_outliner, ARegion *region)
 
BaseED_outliner_give_base_under_cursor (bContext *C, const int mval[2])
 
Tree View Context
void outliner_viewcontext_init (const bContext *C, TreeViewContext *tvc)
 

Function Documentation

◆ ED_outliner_give_base_under_cursor()

Base* ED_outliner_give_base_under_cursor ( struct bContext C,
const int  mval[2] 
)

◆ outliner_find_editbone()

TreeElement* outliner_find_editbone ( ListBase lb,
const EditBone ebone 
)

◆ outliner_find_element_with_flag()

TreeElement* outliner_find_element_with_flag ( const ListBase lb,
short  flag 
)

◆ outliner_find_id()

TreeElement* outliner_find_id ( SpaceOutliner space_outliner,
ListBase lb,
const ID id 
)

◆ outliner_find_item_at_x_in_row()

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 
)

Collapsed items can show their children as click-able icons. This function tries to find such an icon that represents the child item at x-coordinate view_co_x (view-space).

Returns
a hovered child item or parent_te (if no hovered child found).

Definition at line 129 of file outliner_utils.cc.

References outliner_find_item_at_x_in_row_recursive(), outliner_item_is_co_over_icon(), TREESTORE, TSE_R_LAYER, TSELEM_OPEN, and TreeStoreElem::type.

Referenced by outliner_highlight_update(), and outliner_item_do_activate_from_cursor().

◆ outliner_find_item_at_x_in_row_recursive()

static TreeElement* outliner_find_item_at_x_in_row_recursive ( const TreeElement parent_te,
float  view_co_x,
bool r_is_merged_icon 
)
static

◆ outliner_find_item_at_y()

TreeElement* outliner_find_item_at_y ( const SpaceOutliner space_outliner,
const ListBase tree,
float  view_co_y 
)

◆ outliner_find_parent_element()

TreeElement* outliner_find_parent_element ( ListBase lb,
TreeElement parent_te,
const TreeElement child_te 
)

Find parent element of te.

Definition at line 164 of file outliner_utils.cc.

References LISTBASE_FOREACH, and outliner_find_parent_element().

Referenced by collection_drop_invoke(), and outliner_find_parent_element().

◆ outliner_find_posechannel()

TreeElement* outliner_find_posechannel ( ListBase lb,
const bPoseChannel pchan 
)

◆ outliner_find_tree_element()

TreeElement* outliner_find_tree_element ( ListBase lb,
const TreeStoreElem store_elem 
)

◆ outliner_find_tse()

TreeElement* outliner_find_tse ( struct SpaceOutliner space_outliner,
const TreeStoreElem tse 
)

◆ outliner_is_element_in_view()

bool outliner_is_element_in_view ( const TreeElement te,
const View2D v2d 
)

Definition at line 404 of file outliner_utils.cc.

References View2D::cur, UI_UNIT_Y, rctf::ymax, rctf::ymin, and TreeElement::ys.

◆ outliner_is_element_visible()

bool outliner_is_element_visible ( const TreeElement te)

Find if element is visible in the outliner tree, i.e. if all of its parents are expanded. Doesn't check if the item is in view-bounds, for that use outliner_is_element_in_view().

Definition at line 388 of file outliner_utils.cc.

References TreeStoreElem::flag, TreeElement::parent, TREESTORE, and TSE_CLOSED.

Referenced by do_outliner_range_select(), and find_walk_select_start_element().

◆ outliner_item_is_co_over_icon()

bool outliner_item_is_co_over_icon ( const TreeElement te,
float  view_co_x 
)

Definition at line 419 of file outliner_utils.cc.

References UI_UNIT_X, and TreeElement::xs.

Referenced by outliner_find_item_at_x_in_row().

◆ outliner_item_is_co_over_name()

bool outliner_item_is_co_over_name ( const TreeElement te,
float  view_co_x 
)

Find if x coordinate is over element name.

Definition at line 424 of file outliner_utils.cc.

References UI_UNIT_X, TreeElement::xend, and TreeElement::xs.

Referenced by outliner_item_rename_find_hovered().

◆ outliner_item_is_co_over_name_icons()

bool outliner_item_is_co_over_name_icons ( const TreeElement te,
float  view_co_x 
)

Find if x coordinate is over an icon or name.

Definition at line 409 of file outliner_utils.cc.

References TREESTORE, TSE_VIEW_COLLECTION_BASE, UI_UNIT_X, TreeElement::xend, and TreeElement::xs.

Referenced by outliner_box_select_invoke(), and outliner_item_do_activate_from_cursor().

◆ outliner_item_is_co_within_close_toggle()

bool outliner_item_is_co_within_close_toggle ( const TreeElement te,
float  view_co_x 
)

Find if x coordinate is over element disclosure toggle.

Definition at line 429 of file outliner_utils.cc.

References UI_UNIT_X, and TreeElement::xs.

Referenced by outliner_item_do_activate_from_cursor(), outliner_item_drag_drop_invoke(), and outliner_item_openclose_invoke().

◆ outliner_right_columns_width()

float outliner_right_columns_width ( const SpaceOutliner space_outliner)

◆ outliner_scroll_view()

void outliner_scroll_view ( struct SpaceOutliner space_outliner,
struct ARegion region,
int  delta_y 
)

Scroll view vertically while keeping within total bounds.

Definition at line 434 of file outliner_utils.cc.

References View2D::cur, MIN2, offset, outliner_tree_dimensions(), UI_UNIT_Y, ARegion::v2d, rctf::ymax, and rctf::ymin.

Referenced by outliner_item_rename(), outliner_scroll_page_exec(), outliner_show_active_exec(), and outliner_walk_scroll().

◆ outliner_search_back()

ID* outliner_search_back ( TreeElement te,
short  idcode 
)

◆ outliner_search_back_te()

TreeElement* outliner_search_back_te ( TreeElement te,
short  idcode 
)

◆ outliner_tag_redraw_avoid_rebuild_on_open_change()

void outliner_tag_redraw_avoid_rebuild_on_open_change ( const SpaceOutliner space_outliner,
ARegion region 
)

◆ outliner_tree_traverse()

bool outliner_tree_traverse ( const SpaceOutliner space_outliner,
ListBase tree,
int  filter_te_flag,
int  filter_tselem_flag,
TreeTraversalFunc  func,
void customdata 
)

Iterate over all tree elements (pre-order traversal), executing func callback for each tree element matching the optional filters.

Parameters
filter_te_flagIf not 0, only TreeElements with this flag will be visited.
filter_tselem_flagSame as filter_te_flag, but for the TreeStoreElem.
funcCustom callback to execute for each visited item.

Definition at line 281 of file outliner_utils.cc.

References TreeStoreElem::flag, outliner_tree_traverse(), TRAVERSE_BREAK, TRAVERSE_CONTINUE, TRAVERSE_SKIP_CHILDS, tree, and TREESTORE.

Referenced by collection_flag_exec(), collection_instance_exec(), collection_isolate_exec(), collection_link_exec(), collection_new_exec(), collection_view_layer_exec(), collection_visibility_exec(), collections_view_layer_poll(), ED_outliner_selected_objects_get(), outliner_active_collection(), outliner_active_layer_collection(), outliner_collection_delete(), outliner_color_tag_set_exec(), outliner_delete_exec(), outliner_hide_exec(), outliner_item_drag_drop_invoke(), and outliner_tree_traverse().

◆ outliner_viewcontext_init()

void outliner_viewcontext_init ( const bContext C,
TreeViewContext tvc 
)