Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2017-03-02 20:12:30 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-03-02 20:12:30 +0300
commit5ce6388f7c2a7fed483ae3ff187063f94f139e94 (patch)
tree6cbaf43e123924517299a91536020cbf7a3806dd
parent0322700d875a1d518a730512531a881f1278124b (diff)
Outliner: add hooks for (yet to be implemented) layer reordering routines
-rw-r--r--source/blender/blenkernel/BKE_collection.h3
-rw-r--r--source/blender/blenkernel/intern/collection.c12
-rw-r--r--source/blender/editors/space_outliner/outliner_tree.c19
3 files changed, 32 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_collection.h b/source/blender/blenkernel/BKE_collection.h
index 45014b801b5..e090584ad7a 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 370a5953964..eac0fc7a2fd 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 0cf76a671a4..afd9610b6bf 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,