From c08dac000ff3ca3597c82740c724f63f024ab542 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Fri, 22 Dec 2017 11:11:04 -0200 Subject: Collection: Name collection based on parent's name So they are: House -> House 1 -> House 2 -> ... The exception is when the parent collection is the master collection. In this case we get: Master Collection -> Collection 1 -> Collection 2 -> ... This is part of "T53495: View layer and collection editing - Design Task" --- source/blender/blenkernel/intern/collection.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'source/blender/blenkernel/intern/collection.c') diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c index 8d69563f5ff..f8934184928 100644 --- a/source/blender/blenkernel/intern/collection.c +++ b/source/blender/blenkernel/intern/collection.c @@ -69,24 +69,35 @@ static SceneCollection *collection_master_from_id(const ID *owner_id) * Add a collection to a collection ListBase and syncronize all render layers * The ListBase is NULL when the collection is to be added to the master collection */ -SceneCollection *BKE_collection_add(ID *owner_id, SceneCollection *sc_parent, const int type, const char *name) +SceneCollection *BKE_collection_add(ID *owner_id, SceneCollection *sc_parent, const int type, const char *name_custom) { SceneCollection *sc_master = collection_master_from_id(owner_id); SceneCollection *sc = MEM_callocN(sizeof(SceneCollection), "New Collection"); sc->type = type; - - if (!name) { - name = DATA_("New Collection"); - } + const char *name = name_custom; if (!sc_parent) { sc_parent = sc_master; } + if (!name) { + if (sc_parent == sc_master) { + name = BLI_sprintfN("Collection %d", BLI_listbase_count(&sc_master->scene_collections) + 1); + } + else { + name = BLI_sprintfN("%s %d", sc_parent->name, BLI_listbase_count(&sc_parent->scene_collections) + 1); + } + } + BKE_collection_rename((Scene *)owner_id, sc, name); BLI_addtail(&sc_parent->scene_collections, sc); BKE_layer_sync_new_scene_collection(owner_id, sc_parent, sc); + + if (name != name_custom) { + MEM_freeN((char *)name); + } + return sc; } -- cgit v1.2.3