Layers: fix bug in move layer collection above/below

Reported by Julian Eisel (Severin)
This commit is contained in:
Dalai Felinto 2017-03-10 16:48:09 +01:00
parent 13f5bed32e
commit 1100ddeaa9
3 changed files with 73 additions and 2 deletions

View File

@ -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 {

View File

@ -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)

View File

@ -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()