[Bf-blender-cvs] [5ce6388f7c] blender2.8: Outliner: add hooks for (yet to be implemented) layer reordering routines

Dalai Felinto noreply at git.blender.org
Thu Mar 2 18:12:34 CET 2017


Commit: 5ce6388f7c2a7fed483ae3ff187063f94f139e94
Author: Dalai Felinto
Date:   Thu Mar 2 18:12:30 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB5ce6388f7c2a7fed483ae3ff187063f94f139e94

Outliner: add hooks for (yet to be implemented) layer reordering routines

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

M	source/blender/blenkernel/BKE_collection.h
M	source/blender/blenkernel/intern/collection.c
M	source/blender/editors/space_outliner/outliner_tree.c

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

diff --git a/source/blender/blenkernel/BKE_collection.h b/source/blender/blenkernel/BKE_collection.h
index 45014b801b..e090584ad7 100644
--- a/source/blender/blenkernel/BKE_collection.h
+++ b/source/blender/blenkernel/BKE_collection.h
@@ -52,6 +52,9 @@ void BKE_collection_object_add_from(struct Scene *scene, struct Object *ob_src,
 void BKE_collection_object_remove(struct Main *bmain, struct Scene *scene, struct SceneCollection *sc, struct Object *object, const bool free_us);
 void BKE_collections_object_remove(struct Main *bmain, struct Scene *scene, struct Object *object, const bool free_us);
 
+void BKE_collection_reinsert_after(const struct Scene *scene, struct SceneCollection *sc_reinsert, struct SceneCollection *sc_after);
+void BKE_collection_reinsert_into(struct SceneCollection *sc_reinsert, struct SceneCollection *sc_into);
+
 typedef void (*BKE_scene_objects_Cb)(struct Object *ob, void *data);
 typedef void (*BKE_scene_collections_Cb)(struct SceneCollection *ob, void *data);
 
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index 370a595396..eac0fc7a2f 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -298,6 +298,18 @@ void BKE_collections_object_remove(Main *bmain, Scene *scene, Object *ob, const
 	FOREACH_SCENE_COLLECTION_END
 }
 
+void BKE_collection_reinsert_after(const struct Scene *scene, SceneCollection *sc_reinsert, SceneCollection *sc_after)
+{
+	UNUSED_VARS(scene, sc_reinsert, sc_after);
+	TODO_LAYER_OPERATORS;
+}
+
+void BKE_collection_reinsert_into(SceneCollection *sc_reinsert, SceneCollection *sc_into)
+{
+	UNUSED_VARS(sc_reinsert, sc_into);
+	TODO_LAYER_OPERATORS;
+}
+
 /* ---------------------------------------------------------------------- */
 /* Iteractors */
 /* scene collection iteractor */
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 0cf76a671a..afd9610b6b 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -1287,7 +1287,7 @@ static void outliner_add_orphaned_datablocks(Main *mainvar, SpaceOops *soops)
 	}
 }
 
-static void outliner_collections_reorder(const Scene *scene, TreeElement *insert_element, TreeElement *insert_handle,
+static void outliner_layer_collections_reorder(const Scene *scene, TreeElement *insert_element, TreeElement *insert_handle,
                                          TreeElementInsertType action)
 {
 	SceneLayer *sl = BKE_scene_layer_render_active(scene);
@@ -1302,6 +1302,20 @@ static void outliner_collections_reorder(const Scene *scene, TreeElement *insert
 	}
 }
 
+static void outliner_scene_collections_reorder(const Scene *scene, TreeElement *insert_element, TreeElement *insert_handle,
+                                         TreeElementInsertType action)
+{
+	SceneCollection *insert_coll = insert_element->directdata;
+	SceneCollection *insert_handle_coll = insert_handle ? insert_handle->directdata : NULL;
+
+	if (action == TE_INSERT_AFTER) {
+		BKE_collection_reinsert_after(scene, insert_coll, insert_handle_coll);
+	}
+	else if (action == TE_INSERT_INTO) {
+		BKE_collection_reinsert_into(insert_coll, insert_handle_coll);
+	}
+}
+
 static void outliner_add_layer_collections_recursive(SpaceOops *soops, ListBase *tree, Scene *scene,
                                                      ListBase *layer_collections, TreeElement *parent_ten,
                                                      int *io_collection_counter)
@@ -1312,7 +1326,7 @@ static void outliner_add_layer_collections_recursive(SpaceOops *soops, ListBase
 
 		ten->name = collection->scene_collection->name;
 		ten->directdata = collection;
-		ten->reinsert = outliner_collections_reorder;
+		ten->reinsert = outliner_layer_collections_reorder;
 
 		for (LinkData *link = collection->object_bases.first; link; link = link->next) {
 			outliner_add_element(soops, &ten->subtree, ((Base *)link->data)->object, NULL, 0, 0);
@@ -1333,6 +1347,7 @@ static void outliner_add_scene_collection_init(TreeElement *te, SceneCollection
 {
 	te->name = collection->name;
 	te->directdata = collection;
+	te->reinsert = outliner_scene_collections_reorder;
 }
 
 static void outliner_add_scene_collections_recursive(SpaceOops *soops, ListBase *tree, Scene *scene,




More information about the Bf-blender-cvs mailing list