diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c index 6da7cb13298..d7046d0899c 100644 --- a/source/blender/blenkernel/intern/layer.c +++ b/source/blender/blenkernel/intern/layer.c @@ -664,7 +664,8 @@ bool BKE_layer_collection_move_above(const Scene *scene, LayerCollection *lc_dst else if (is_directly_linked_dst) { /* Both directly linked to the SceneLayer, just need to swap */ if (is_directly_linked_src) { - BLI_listbase_swaplinks(&sl->layer_collections, lc_src, lc_dst); + BLI_remlink(&sl->layer_collections, lc_src); + BLI_insertlinkbefore(&sl->layer_collections, lc_dst, lc_src); return true; } else { @@ -738,7 +739,8 @@ bool BKE_layer_collection_move_below(const Scene *scene, LayerCollection *lc_dst else if (is_directly_linked_dst) { /* Both directly linked to the SceneLayer, just need to swap */ if (is_directly_linked_src) { - BLI_listbase_swaplinks(&sl->layer_collections, lc_src, lc_dst); + BLI_remlink(&sl->layer_collections, lc_src); + BLI_insertlinkafter(&sl->layer_collections, lc_dst, lc_src); return true; } else { diff --git a/tests/python/render_layer/CMakeLists.txt b/tests/python/render_layer/CMakeLists.txt index d037b9cd3b7..3781ce02ec0 100644 --- a/tests/python/render_layer/CMakeLists.txt +++ b/tests/python/render_layer/CMakeLists.txt @@ -125,6 +125,7 @@ RENDER_LAYER_TEST(move_above_below_layer_collection_h) RENDER_LAYER_TEST(move_above_below_layer_collection_i) RENDER_LAYER_TEST(move_above_below_layer_collection_j) RENDER_LAYER_TEST(move_above_below_layer_collection_k) +RENDER_LAYER_TEST(move_above_below_layer_collection_l) RENDER_LAYER_TEST(move_into_layer_collection_a) RENDER_LAYER_TEST(move_into_layer_collection_b) RENDER_LAYER_TEST(move_into_layer_collection_c) diff --git a/tests/python/render_layer/test_move_above_below_layer_collection_l.py b/tests/python/render_layer/test_move_above_below_layer_collection_l.py new file mode 100644 index 00000000000..db91b14c38d --- /dev/null +++ b/tests/python/render_layer/test_move_above_below_layer_collection_l.py @@ -0,0 +1,68 @@ +# ./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): + reference_layers_map = [ + ['Layer 1', [ + 'Master Collection', + 'C', + '3', + ]], + ['Layer 2', [ + 'C', + 'cat', + '3', + 'dog', + ]], + ] + return reference_layers_map + + def test_layer_collection_move_a(self): + """ + Test outliner operations + """ + self.setup_tree() + self.assertTrue(self.move_below('Layer 2.cat', 'Layer 2.C')) + self.compare_tree_maps() + + def test_layer_collection_move_b(self): + """ + Test outliner operations + """ + self.setup_tree() + self.assertTrue(self.move_above('Layer 2.cat', 'Layer 2.3')) + 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()