From 7fe81fe5a320d9a4945a599ac4cb5af05f0b64e5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 19 Jul 2019 18:43:12 +1000 Subject: Fix T63090: Delete keyframe reports invalid for multiple objects --- source/blender/editors/animation/keyframing.c | 31 +++++++++++++++++++-------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'source/blender') diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index cab821e52ef..2e7ed7eae34 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -2249,10 +2249,16 @@ static int delete_key_v3d_exec(bContext *C, wmOperator *op) Scene *scene = CTX_data_scene(C); float cfra = (float)CFRA; + int selected_objects_len = 0; + int selected_objects_success_len = 0; + int success_multi = 0; + CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { ID *id = &ob->id; int success = 0; + selected_objects_len += 1; + /* just those in active action... */ if ((ob->adt) && (ob->adt->action)) { AnimData *adt = ob->adt; @@ -2317,22 +2323,29 @@ static int delete_key_v3d_exec(bContext *C, wmOperator *op) DEG_id_tag_update(&ob->adt->action->id, ID_RECALC_ANIMATION_NO_FLUSH); } - /* report success (or failure) */ + /* Only for reporting. */ if (success) { - BKE_reportf(op->reports, - RPT_INFO, - "Object '%s' successfully had %d keyframes removed", - id->name + 2, - success); - } - else { - BKE_reportf(op->reports, RPT_ERROR, "No keyframes removed from Object '%s'", id->name + 2); + selected_objects_success_len += 1; + success_multi += success; } DEG_id_tag_update(&ob->id, ID_RECALC_TRANSFORM); } CTX_DATA_END; + /* report success (or failure) */ + if (selected_objects_success_len) { + BKE_reportf(op->reports, + RPT_INFO, + "%d object(s) successfully had %d keyframes removed", + selected_objects_success_len, + success_multi); + } + else { + BKE_reportf( + op->reports, RPT_ERROR, "No keyframes removed from %d object(s)", selected_objects_len); + } + /* send updates */ WM_event_add_notifier(C, NC_OBJECT | ND_KEYS, NULL); -- cgit v1.2.3