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"
This commit is contained in:
parent
fec3be6b54
commit
c08dac000f
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -88,10 +88,7 @@ void BKE_group_init(Group *group)
|
|||
BKE_collection_unlink(group->view_layer, group->view_layer->layer_collections.first);
|
||||
|
||||
/* Create and link a new default collection. */
|
||||
SceneCollection *defaut_collection = BKE_collection_add(&group->id,
|
||||
NULL,
|
||||
COLLECTION_TYPE_GROUP_INTERNAL,
|
||||
"Default Collection");
|
||||
SceneCollection *defaut_collection = BKE_collection_add(&group->id, NULL, COLLECTION_TYPE_GROUP_INTERNAL, NULL);
|
||||
BKE_collection_link(group->view_layer, defaut_collection);
|
||||
}
|
||||
|
||||
|
|
|
@ -482,11 +482,6 @@ void do_versions_after_linking_280(Main *main)
|
|||
base->lay = base->object->lay;
|
||||
}
|
||||
|
||||
/* Fallback name if only one layer was found in the original file */
|
||||
if (BLI_listbase_is_single(&sc_master->scene_collections)) {
|
||||
BKE_collection_rename(scene, sc_master->scene_collections.first, "Default Collection");
|
||||
}
|
||||
|
||||
/* remove bases once and for all */
|
||||
for (Base *base = scene->base.first; base; base = base->next) {
|
||||
id_us_min(&base->object->id);
|
||||
|
|
Loading…
Reference in New Issue