diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2020-05-13 18:30:39 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2020-05-15 14:32:15 +0300 |
commit | 0a32f6c8686c6a14a052f5b254655b3b69a581e3 (patch) | |
tree | 2fa3aa373b80ece8d8c0e2979e1eabf59f8f7b65 /source/blender/makesrna | |
parent | 0ae64a9945db9f3d00ba7ef3780e25e16fabf664 (diff) |
Fix T76710: objects get lost in linked/overridden collections
Right now:
- drag-drop in the Outliner prevents dropping inside linked collections
- drag-drop in the Outliner allows dropping inside overridden
collections (should not be the case)
- `Object Properties` > `Collections` panel allows to add to overridden
collection (should not be the case)
- `Object Properties` > `Collections` panel filters out non-local
collections (so adding to linked collections is forbidden)
- `bpy collection.objects.link()` allows to add to linked collections
(should not be the case)
- `bpy collection.objects.link()` allows to add to overridden
collections (should not be the case)
While this might be supported in the future for overriden collections,
these cases should not be allowed atm. since objects get lost on file
reload.
Note: for the case of the `Object Properties` > `Collections` panel,
this could be improved further to filter out overridden collections as
well.
Reviewers: mont29, brecht
Subscribers:
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r-- | source/blender/makesrna/intern/rna_collection.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_collection.c b/source/blender/makesrna/intern/rna_collection.c index 709be0cf842..fe64ead3f89 100644 --- a/source/blender/makesrna/intern/rna_collection.c +++ b/source/blender/makesrna/intern/rna_collection.c @@ -82,6 +82,23 @@ static void rna_Collection_objects_link(Collection *collection, ReportList *reports, Object *object) { + /* Currently this should not be allowed (might be supported in the future though...). */ + if (ID_IS_OVERRIDE_LIBRARY(&collection->id)) { + BKE_reportf(reports, + RPT_ERROR, + "Could not link the object '%s' because the collection '%s' is overridden.", + object->id.name + 2, + collection->id.name + 2); + return; + } + if (ID_IS_LINKED(&collection->id)) { + BKE_reportf(reports, + RPT_ERROR, + "Could not link the object '%s' because the collection '%s' is linked.", + object->id.name + 2, + collection->id.name + 2); + return; + } if (!BKE_collection_object_add(bmain, collection, object)) { BKE_reportf(reports, RPT_ERROR, |