Fix #126568: add dropped asset collection to active collection #126648

Merged
Jacques Lucke merged 2 commits from JacquesLucke/blender:add-dropped-collection into main 2024-08-23 12:49:24 +02:00
2 changed files with 7 additions and 1 deletions
Showing only changes of commit 38c5c3258f - Show all commits

View File

@ -2065,7 +2065,7 @@ static int collection_drop_exec(bContext *C, wmOperator *op)
ob->transflag |= OB_DUPLICOLLECTION; ob->transflag |= OB_DUPLICOLLECTION;
id_us_plus(&add_info->collection->id); id_us_plus(&add_info->collection->id);
} }
else { else if (ID_IS_EDITABLE(&add_info->collection->id)) {
ViewLayer *view_layer = CTX_data_view_layer(C); ViewLayer *view_layer = CTX_data_view_layer(C);
float delta_mat[4][4]; float delta_mat[4][4];
unit_m4(delta_mat); unit_m4(delta_mat);

View File

@ -842,6 +842,7 @@ static void view3d_collection_drop_copy_external_asset(bContext *C, wmDrag *drag
{ {
BLI_assert(drag->type == WM_DRAG_ASSET); BLI_assert(drag->type == WM_DRAG_ASSET);
Main *bmain = CTX_data_main(C);
wmDragAsset *asset_drag = WM_drag_get_asset_data(drag, 0); wmDragAsset *asset_drag = WM_drag_get_asset_data(drag, 0);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C); ViewLayer *view_layer = CTX_data_view_layer(C);
@ -851,6 +852,11 @@ static void view3d_collection_drop_copy_external_asset(bContext *C, wmDrag *drag
ID *id = WM_drag_asset_id_import(C, asset_drag, FILE_AUTOSELECT); ID *id = WM_drag_asset_id_import(C, asset_drag, FILE_AUTOSELECT);
Collection *collection = (Collection *)id; Collection *collection = (Collection *)id;
BKE_view_layer_synced_ensure(scene, view_layer);
Collection *old_active_collection = BKE_view_layer_active_collection_get(view_layer)->collection;
BKE_collection_child_add(bmain, old_active_collection, collection);
DEG_id_tag_update(&old_active_collection->id, ID_RECALC_SYNC_TO_EVAL);
/* TODO(sergey): Only update relations for the current scene. */ /* TODO(sergey): Only update relations for the current scene. */
DEG_relations_tag_update(CTX_data_main(C)); DEG_relations_tag_update(CTX_data_main(C));
WM_event_add_notifier(C, NC_SCENE | ND_LAYER_CONTENT, scene); WM_event_add_notifier(C, NC_SCENE | ND_LAYER_CONTENT, scene);