Fix collection syncing when creating new collections from the outliner

We were not passing a scene collection parent to the BKE_collection_add
function, which in turn made syncing not work.

Right now we:
* Explicitly pass the master collection in this case
* Fallback to the master collection in other cases

With unittest.
This commit is contained in:
Dalai Felinto
2018-02-09 09:04:00 -02:00
parent 37e53ca5f3
commit 25074be697
5 changed files with 55 additions and 1 deletions

View File

@@ -62,6 +62,7 @@ endmacro()
VIEW_LAYER_TEST(active_collection)
VIEW_LAYER_TEST(background_set)
VIEW_LAYER_TEST(collection_new_sync)
VIEW_LAYER_TEST(collection_rename_a)
VIEW_LAYER_TEST(collection_rename_b)
VIEW_LAYER_TEST(evaluation_render_settings_a)

View File

@@ -0,0 +1,47 @@
# ############################################################
# Importing - Same For All Render Layer Tests
# ############################################################
import unittest
import os
import sys
from view_layer_common import *
# ############################################################
# Testing
# ############################################################
class UnitTesting(ViewLayerTesting):
def test_view_layer_syncing(self):
"""
See if we can copy view layers.
"""
import bpy
scene = bpy.context.scene
view_layer = scene.view_layers.new("All")
self.assertEqual(len(view_layer.collections), 1)
self.assertEqual(view_layer.collections[0].collection, scene.master_collection)
self.assertEqual(
{collection.name for collection in view_layer.collections[0].collections},
{'Collection 1'})
self.assertEqual(
bpy.ops.outliner.collection_new(),
{'FINISHED'})
self.assertEqual(
{collection.name for collection in view_layer.collections[0].collections},
{'Collection 1', 'Collection 2'})
# ############################################################
# Main - Same For All Render Layer Tests
# ############################################################
if __name__ == '__main__':
UnitTesting._extra_arguments = setup_extra_arguments(__file__)
unittest.main()