[Bf-blender-cvs] [e1238bccedb] blender2.8: Outliner: Always show the master collection on top of the tree

Dalai Felinto noreply at git.blender.org
Tue Jan 2 18:01:37 CET 2018


Commit: e1238bccedb095389c07d729b18cd572d8f65ca3
Author: Dalai Felinto
Date:   Tue Jan 2 12:30:48 2018 -0200
Branches: blender2.8
https://developer.blender.org/rBe1238bccedb095389c07d729b18cd572d8f65ca3

Outliner: Always show the master collection on top of the tree

This reverts commit 0d0d68d39dad8e14b80489bc28d591fc6eff5f21 with extra changes.

This is part of T53495.

===================================================================

M	source/blender/editors/space_outliner/outliner_tree.c

===================================================================

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);
 }
 
 /* ======================================================= */



More information about the Bf-blender-cvs mailing list