diff options
-rw-r--r-- | source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc | 1 | ||||
-rw-r--r-- | source/blender/editors/armature/pose_edit.c | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc index 617045049fc..b0e8760174a 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc @@ -566,6 +566,7 @@ void update_copy_on_write_object(const Depsgraph * /*depsgraph*/, extract_pose_from_pose(pose_cow, pose_orig); /* Update object itself. */ BKE_object_transform_copy(object_cow, object_orig); + object_cow->mode = object_orig->mode; } /* Update copy-on-write version of datablock from it's original ID without re-building diff --git a/source/blender/editors/armature/pose_edit.c b/source/blender/editors/armature/pose_edit.c index 481d4aadfb7..7a8b89899a7 100644 --- a/source/blender/editors/armature/pose_edit.c +++ b/source/blender/editors/armature/pose_edit.c @@ -96,7 +96,8 @@ void ED_armature_enter_posemode(bContext *C, Base *base) case OB_ARMATURE: ob->restore_mode = ob->mode; ob->mode |= OB_MODE_POSE; - + /* Inform all CoW versions that we changed the mode. */ + DEG_id_tag_update_ex(CTX_data_main(C), &ob->id, DEG_TAG_COPY_ON_WRITE); WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_POSE, NULL); break; @@ -115,7 +116,10 @@ void ED_armature_exit_posemode(bContext *C, Base *base) ob->restore_mode = ob->mode; ob->mode &= ~OB_MODE_POSE; - + + /* Inform all CoW versions that we changed the mode. */ + DEG_id_tag_update_ex(CTX_data_main(C), &ob->id, DEG_TAG_COPY_ON_WRITE); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, NULL); } } |