[Bf-blender-cvs] [ddedcf7ada1] blender2.8: Outliner/layer: fix users trying to drop a collection into itself (recursion hell)
Dalai Felinto
noreply at git.blender.org
Mon Mar 13 17:38:43 CET 2017
Commit: ddedcf7ada1bec8a4e2f1c89984ded312a12cc46
Author: Dalai Felinto
Date: Mon Mar 13 17:35:58 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBddedcf7ada1bec8a4e2f1c89984ded312a12cc46
Outliner/layer: fix users trying to drop a collection into itself (recursion hell)
===================================================================
M source/blender/blenkernel/intern/layer.c
M tests/python/render_layer/CMakeLists.txt
A tests/python/render_layer/test_move_into_layer_collection_j.py
===================================================================
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 132cf6c8ac6..418dc68a503 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -580,6 +580,11 @@ bool BKE_layer_collection_move_into(const Scene *scene, LayerCollection *lc_dst,
return false;
}
+ /* We can't nest the collection into itself */
+ if (lc_src->scene_collection == lc_dst->scene_collection) {
+ return false;
+ }
+
/* Collection is already where we wanted it to be */
if (lc_dst->layer_collections.last == lc_src) {
return false;
diff --git a/tests/python/render_layer/CMakeLists.txt b/tests/python/render_layer/CMakeLists.txt
index 3781ce02ec0..f03a04a7029 100644
--- a/tests/python/render_layer/CMakeLists.txt
+++ b/tests/python/render_layer/CMakeLists.txt
@@ -135,6 +135,7 @@ RENDER_LAYER_TEST(move_into_layer_collection_f)
RENDER_LAYER_TEST(move_into_layer_collection_g)
RENDER_LAYER_TEST(move_into_layer_collection_h)
RENDER_LAYER_TEST(move_into_layer_collection_i)
+RENDER_LAYER_TEST(move_into_layer_collection_j)
RENDER_LAYER_TEST(layer_linking)
RENDER_LAYER_TEST(layer_syncinc)
RENDER_LAYER_TEST(scene_copy)
diff --git a/tests/python/render_layer/test_move_into_layer_collection_j.py b/tests/python/render_layer/test_move_into_layer_collection_j.py
new file mode 100644
index 00000000000..32cd3732544
--- /dev/null
+++ b/tests/python/render_layer/test_move_into_layer_collection_j.py
@@ -0,0 +1,49 @@
+# ./blender.bin --background -noaudio --python tests/python/render_layer/test_link.py -- --testdir="/data/lib/tests/"
+
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+
+import os, sys
+sys.path.append(os.path.dirname(__file__))
+
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(MoveLayerCollectionTesting):
+ def get_reference_scene_tree_map(self):
+ # original tree, no changes
+ return self.get_initial_scene_tree_map()
+
+ def get_reference_layers_tree_map(self):
+ # original tree, no changes
+ return self.get_initial_layers_tree_map()
+
+ def test_layer_collection_into(self):
+ """
+ Test outliner operations
+ Prevent collection from being dragged into itself
+ """
+ self.setup_tree()
+ self.assertFalse(self.move_into("Layer 2.dog", "Layer 2.3.dog"))
+ self.compare_tree_maps()
+
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+ import sys
+
+ extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+ sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+ UnitTesting._extra_arguments = extra_arguments
+ unittest.main()
More information about the Bf-blender-cvs
mailing list