diff options
author | Jacques Lucke <mail@jlucke.com> | 2018-10-19 15:30:39 +0300 |
---|---|---|
committer | Jacques Lucke <mail@jlucke.com> | 2018-10-19 15:30:39 +0300 |
commit | c17f2c2eb61f387c278a8dbc8ec559fc1d4bcad6 (patch) | |
tree | c4f141eca9becb078524bf5081088ca4c6b23554 /source | |
parent | bdd02cc082e5f16935f2ed9fbafe63f8aed2822a (diff) |
Outliner: Open empty collection when something is dragged into it
Reviewers: brecht
Differential Revision: https://developer.blender.org/D3814
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_collection.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/collection.c | 5 | ||||
-rw-r--r-- | source/blender/editors/space_outliner/outliner_dragdrop.c | 4 |
3 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_collection.h b/source/blender/blenkernel/BKE_collection.h index 175ee61c690..a9539b3a3c4 100644 --- a/source/blender/blenkernel/BKE_collection.h +++ b/source/blender/blenkernel/BKE_collection.h @@ -75,6 +75,7 @@ struct Collection *BKE_collection_master_add(void); bool BKE_collection_has_object(struct Collection *collection, struct Object *ob); bool BKE_collection_has_object_recursive(struct Collection *collection, struct Object *ob); struct Collection *BKE_collection_object_find(struct Main *bmain, struct Collection *collection, struct Object *ob); +bool BKE_collection_is_empty(struct Collection *collection); bool BKE_collection_object_add(struct Main *bmain, struct Collection *collection, struct Object *ob); void BKE_collection_object_add_from(struct Main *bmain, struct Scene *scene, struct Object *ob_src, struct Object *ob_dst); diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c index ef126da3463..54ce5223756 100644 --- a/source/blender/blenkernel/intern/collection.c +++ b/source/blender/blenkernel/intern/collection.c @@ -467,6 +467,11 @@ Collection *BKE_collection_object_find(Main *bmain, Collection *collection, Obje return NULL; } +bool BKE_collection_is_empty(Collection *collection) +{ + return BLI_listbase_is_empty(&collection->gobject) && BLI_listbase_is_empty(&collection->children); +} + /********************** Collection Objects *********************/ static bool collection_object_add(Main *bmain, Collection *collection, Object *ob, int flag, const bool add_us) diff --git a/source/blender/editors/space_outliner/outliner_dragdrop.c b/source/blender/editors/space_outliner/outliner_dragdrop.c index 293c1d5f29c..4a1e720fe2a 100644 --- a/source/blender/editors/space_outliner/outliner_dragdrop.c +++ b/source/blender/editors/space_outliner/outliner_dragdrop.c @@ -794,6 +794,10 @@ static int collection_drop_invoke(bContext *C, wmOperator *UNUSED(op), const wmE return OPERATOR_CANCELLED; } + if (BKE_collection_is_empty(data.to)) { + TREESTORE(data.te)->flag &= ~TSE_CLOSED; + } + for (wmDragID *drag_id = drag->ids.first; drag_id; drag_id = drag_id->next) { /* Ctrl enables linking, so we don't need a from collection then. */ Collection *from = (event->ctrl) ? NULL : collection_parent_from_ID(drag_id->from_parent); |