diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2018-01-02 17:30:48 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2018-01-02 18:10:45 +0300 |
commit | e1238bccedb095389c07d729b18cd572d8f65ca3 (patch) | |
tree | b725df1dd4bc80db50b69a8d8edef7862c61bc63 /source/blender/editors/space_outliner/outliner_tree.c | |
parent | e8c737d7c27544695c2de45c8b4589317c04f5b6 (diff) |
Outliner: Always show the master collection on top of the tree
This reverts commit 0d0d68d39dad8e14b80489bc28d591fc6eff5f21 with extra changes.
This is part of T53495.
Diffstat (limited to 'source/blender/editors/space_outliner/outliner_tree.c')
-rw-r--r-- | source/blender/editors/space_outliner/outliner_tree.c | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c index 0d0714a3453..2906e2122dd 100644 --- a/source/blender/editors/space_outliner/outliner_tree.c +++ b/source/blender/editors/space_outliner/outliner_tree.c @@ -1474,35 +1474,43 @@ static bool outliner_scene_collections_reorder_poll( return true; } -static void outliner_add_scene_collection_objects( +static void inline outliner_add_scene_collection_init(TreeElement *te, SceneCollection *collection) +{ + te->name = collection->name; + te->directdata = collection; + te->reinsert = outliner_scene_collections_reorder; + te->reinsert_poll = outliner_scene_collections_reorder_poll; +} + +static void inline outliner_add_scene_collection_objects( SpaceOops *soops, ListBase *tree, SceneCollection *collection, TreeElement *parent) { for (LinkData *link = collection->objects.first; link; link = link->next) { outliner_add_element(soops, tree, link->data, parent, 0, 0); } - outliner_make_hierarchy(tree); } -static void outliner_add_scene_collections_recursive( - SpaceOops *soops, ListBase *tree, ListBase *scene_collections, TreeElement *parent_ten) +static void outliner_add_scene_collection_recursive( + SpaceOops *soops, ListBase *tree, SceneCollection *scene_collection, TreeElement *parent_ten) { - for (SceneCollection *collection = scene_collections->first; collection; collection = collection->next) { - TreeElement *ten = outliner_add_element(soops, tree, collection, parent_ten, TSE_SCENE_COLLECTION, 0); - - ten->name = collection->name; - ten->directdata = collection; - ten->reinsert = outliner_scene_collections_reorder; - ten->reinsert_poll = outliner_scene_collections_reorder_poll; + TreeElement *ten = outliner_add_element(soops, tree, scene_collection, parent_ten, TSE_SCENE_COLLECTION, 0); + outliner_add_scene_collection_init(ten, scene_collection); + outliner_add_scene_collection_objects(soops, &ten->subtree, scene_collection, ten); - outliner_add_scene_collections_recursive(soops, &ten->subtree, &collection->scene_collections, ten); - outliner_add_scene_collection_objects(soops, &ten->subtree, collection, ten); + for (SceneCollection *scene_collection_nested = scene_collection->scene_collections.first; + scene_collection_nested != NULL; + scene_collection_nested = scene_collection_nested->next) + { + outliner_add_scene_collection_recursive(soops, &ten->subtree, scene_collection_nested, ten); } + + outliner_make_hierarchy(&ten->subtree); } + static void outliner_add_collections_master(SpaceOops *soops, Scene *scene) { - SceneCollection *master = BKE_collection_master(&scene->id); - outliner_add_scene_collections_recursive(soops, &soops->tree, &master->scene_collections, NULL); - outliner_add_scene_collection_objects(soops, &soops->tree, master, NULL); + SceneCollection *master_collection = BKE_collection_master(&scene->id); + outliner_add_scene_collection_recursive(soops, &soops->tree, master_collection, NULL); } /* ======================================================= */ |