56 lib->id.newid = (
ID *)ten;
66 if (ten ==
tree.first) {
74 if (!
lib || !(
lib->runtime->parent ||
lib->archive_parent_library)) {
80 (
lib->archive_parent_library ?
lib->archive_parent_library :
lib->runtime->parent)
88 library_id->newid =
nullptr;
96 const short filter_id_type = id_filter_get();
106 TreeElement *tenlib =
nullptr;
107 for (
int a = 0; a < lbarray.
size(); a++) {
108 if (!lbarray[a] || !lbarray[a]->first) {
112 ID *
id =
static_cast<ID *
>(lbarray[a]->
first);
113 const bool is_library = (
GS(id->
name) ==
ID_LI) && (
lib !=
nullptr);
122 if (id_iter->lib ==
lib) {
130 if (
id !=
nullptr || is_library) {
138 tenlib->name =
IFACE_(
"Current File");
146 if (filter_id_type) {
149 else if (id->
lib ==
lib) {
151 &tenlib->subtree,
reinterpret_cast<ID *
>(
lib),
nullptr,
nullptr,
TSE_ID_BASE, a);
152 ten->directdata = lbarray[a];
157 if (library_id_filter_poll(
lib,
id)) {
168short TreeDisplayLibraries::id_filter_get()
const
176bool TreeDisplayLibraries::library_id_filter_poll(
const Library *
lib,
ID *
id)
const
182 if (id_filter_get() ==
ID_GR) {
186 bool has_non_scene_parent =
false;
190 has_non_scene_parent =
true;
194 if (has_non_scene_parent) {
MainListsArray BKE_main_lists_get(Main &bmain)
ListBase * which_libbase(Main *bmain, short type)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define ID_TYPE_IS_DEPRECATED(id_type)
Object groups, one object can be in many groups at once.
struct Collection Collection
void append(const T &value)
void extend(Span< T > array)
AbstractTreeDisplay(SpaceOutliner &space_outliner)
SpaceOutliner & space_outliner_
static TreeElement * add_element(SpaceOutliner *space_outliner, ListBase *lb, ID *owner_id, void *create_data, TreeElement *parent, short type, short index, const bool expand=true)
TreeDisplayLibraries(SpaceOutliner &space_outliner)
ListBase build_tree(const TreeSourceData &source_data) override
GPU_SHADER_INTERFACE_INFO(depth_2d_update_iface).smooth(Type fragColor push_constant(Type::float2_t, "extent") .push_constant(Type source_data
ListBaseWrapper< T > List
const char * outliner_idcode_to_plural(short idcode)
Vector< T * > listbase_to_vector(ListBase &list)
ListBaseWrapperTemplate< ListBase, T > ListBaseWrapper
CollectionRuntimeHandle * runtime
The data to build the tree from.
Establish and manage Outliner trees for different display modes.
static DynamicLibrary lib