diff options
Diffstat (limited to 'source/blender/editors/space_graph')
-rw-r--r-- | source/blender/editors/space_graph/graph_edit.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index bc82e7e20c2..2083a26f638 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -623,11 +623,12 @@ void GRAPH_OT_paste(wmOperatorType *ot) /** \name Duplicate Keyframes Operator * \{ */ -static void duplicate_graph_keys(bAnimContext *ac) +static bool duplicate_graph_keys(bAnimContext *ac) { ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; int filter; + bool changed = false; /* Filter data. */ filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_CURVE_VISIBLE | ANIMFILTER_FOREDIT | @@ -636,13 +637,15 @@ static void duplicate_graph_keys(bAnimContext *ac) /* Loop through filtered data and delete selected keys. */ for (ale = anim_data.first; ale; ale = ale->next) { - duplicate_fcurve_keys((FCurve *)ale->key_data); + changed |= duplicate_fcurve_keys((FCurve *)ale->key_data); ale->update |= ANIM_UPDATE_DEFAULT; } ANIM_animdata_update(ac, &anim_data); ANIM_animdata_freelist(&anim_data); + + return changed; } /* ------------------- */ @@ -657,7 +660,9 @@ static int graphkeys_duplicate_exec(bContext *C, wmOperator *UNUSED(op)) } /* Duplicate keyframes. */ - duplicate_graph_keys(&ac); + if (!duplicate_graph_keys(&ac)) { + return OPERATOR_CANCELLED; + } /* Set notifier that keyframes have changed. */ WM_event_add_notifier(C, NC_ANIMATION | ND_KEYFRAME | NA_ADDED, NULL); |