Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/object/object_add.c
| Show First 20 Lines • Show All 3,520 Lines • ▼ Show 20 Lines | basen = object_add_duplicate_internal( | ||||
| LIB_ID_DUPLICATE_IS_SUBPROCESS | LIB_ID_DUPLICATE_IS_ROOT_ID); | LIB_ID_DUPLICATE_IS_SUBPROCESS | LIB_ID_DUPLICATE_IS_ROOT_ID); | ||||
| if (basen == NULL) { | if (basen == NULL) { | ||||
| BKE_report(op->reports, RPT_ERROR, "Object could not be duplicated"); | BKE_report(op->reports, RPT_ERROR, "Object could not be duplicated"); | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| } | } | ||||
| basen->object->visibility_flag &= ~OB_HIDE_VIEWPORT; | basen->object->visibility_flag &= ~OB_HIDE_VIEWPORT; | ||||
| /* Do immediately, as #copy_object_set_idnew() below operates on visible objects. */ | |||||
| BKE_base_eval_flags(basen); | |||||
Severin: We don't usually call this function directly. Could call `BKE_main_collection_sync_remap()`… | |||||
| /* object_add_duplicate_internal() doesn't deselect other objects, unlike object_add_common() or | /* object_add_duplicate_internal() doesn't deselect other objects, unlike object_add_common() or | ||||
| * BKE_view_layer_base_deselect_all(). */ | * BKE_view_layer_base_deselect_all(). */ | ||||
| ED_object_base_deselect_all(view_layer, NULL, SEL_DESELECT); | ED_object_base_deselect_all(view_layer, NULL, SEL_DESELECT); | ||||
| ED_object_base_select(basen, BA_SELECT); | ED_object_base_select(basen, BA_SELECT); | ||||
| ED_object_base_activate(C, basen); | ED_object_base_activate(C, basen); | ||||
| copy_object_set_idnew(C); | copy_object_set_idnew(C); | ||||
| ▲ Show 20 Lines • Show All 326 Lines • Show Last 20 Lines | |||||
We don't usually call this function directly. Could call BKE_main_collection_sync_remap() here, but that doesn't seem cheap, and it is called eventually anyway (through copy_object_set_idnew() -> BKE_libblock_relink_to_newid().
So I think this is the best solution.