Commit: ad19133051ff7d990fc72e31995c6fb78e6bc70d Author: Julian Eisel Date: Thu Mar 24 19:04:33 2022 +0100 Branches: temp-outliner-library-override-hierarchy https://developer.blender.org/rBad19133051ff7d990fc72e31995c6fb78e6bc70d
Outliner: Initial Hierarchy view mode for Library Overrides Shows all library override hierarchies from the current file and linked files (indirect library overrides). TODO before merge: - Forbid recursive hierarchies in some corner cases - Properly support having the same ID in multiple branches of a hierarchy Adding the right column is pending work on system overrides and will be added later once that is ready. Part of T95802. Differential Revision: https://developer.blender.org/D14440 =================================================================== =================================================================== diff --cc source/blender/editors/space_outliner/tree/tree_display_override_library_properties.cc index 10b00c2e9cb,b5c0a10c834..534e07cb2b8 --- a/source/blender/editors/space_outliner/tree/tree_display_override_library_properties.cc +++ b/source/blender/editors/space_outliner/tree/tree_display_override_library_properties.cc @@@ -30,74 -30,24 +30,24 @@@ TreeDisplayOverrideLibraryProperties::T { } -ListBase TreeDisplayOverrideLibrary::buildTree(const TreeSourceData &source_data) +ListBase TreeDisplayOverrideLibraryProperties::buildTree(const TreeSourceData &source_data) { - ListBase tree = {nullptr}; - - { - /* current file first - mainvar provides tselem with unique pointer - not used */ - TreeElement *ten = add_library_contents(*source_data.bmain, tree, nullptr); - TreeStoreElem *tselem; - - if (ten) { - tselem = TREESTORE(ten); - if (!tselem->used) { - tselem->flag &= ~TSE_CLOSED; - } - } - } + ListBase tree = add_library_contents(*source_data.bmain); - for (ID *id : List<ID>(source_data.bmain->libraries)) { - Library *lib = reinterpret_cast<Library *>(id); - TreeElement *ten = add_library_contents(*source_data.bmain, tree, lib); - /* NULL-check matters, due to filtering there may not be a new element. */ - if (ten) { - lib->id.newid = (ID *)ten; + for (TreeElement *top_level_te : List<TreeElement>(tree)) { + TreeStoreElem *tselem = TREESTORE(top_level_te); + if (!tselem->used) { + tselem->flag &= ~TSE_CLOSED; } } return tree; } - TreeElement *TreeDisplayOverrideLibraryProperties::add_library_contents(Main &mainvar, - ListBase &lb, - Library *lib) -ListBase TreeDisplayOverrideLibrary::add_library_contents(Main &mainvar) ++ListBase TreeDisplayOverrideLibraryProperties::add_library_contents(Main &mainvar) { + ListBase tree = {nullptr}; + const short filter_id_type = id_filter_get(); ListBase *lbarray[INDEX_ID_MAX]; @@@ -167,10 -104,17 +104,17 @@@ } } - return tenlib; + /* Remove ID base elements that turn out to be empty. */ + LISTBASE_FOREACH_MUTABLE (TreeElement *, te, &tree) { + if (BLI_listbase_is_empty(&te->subtree)) { + outliner_free_tree_element(te, &tree); + } + } + + return tree; } -short TreeDisplayOverrideLibrary::id_filter_get() const +short TreeDisplayOverrideLibraryProperties::id_filter_get() const { if (space_outliner_.filter & SO_FILTER_ID_TYPE) { return space_outliner_.filter_id_type; _______________________________________________ Bf-blender-cvs mailing list [email protected] List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs
