diff options
author | Joshua Leung <aligorith@gmail.com> | 2011-10-27 05:55:10 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2011-10-27 05:55:10 +0400 |
commit | 0ebda4ba5848e1f78cc4fff7abaab3844ab94734 (patch) | |
tree | 42539746e2575d577615efb2ed713b5c6262e1bc /source | |
parent | cd852ce1a199da11f119394ea719f9699c76c995 (diff) |
Bugfix [#29015] Copy n Paste keyframes and poses broken?
Improved error messages presented when trying to paste keyframes.
Previously, "No keyframes to paste" would always be displayed, even if
the copy/paste buffer had some contents but couldn't be pasted if
there weren't any F-Curves selected to paste to.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/animation/keyframes_general.c | 10 | ||||
-rw-r--r-- | source/blender/editors/space_action/action_edit.c | 14 | ||||
-rw-r--r-- | source/blender/editors/space_graph/graph_edit.c | 7 |
3 files changed, 16 insertions, 15 deletions
diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c index 0f4546968ba..732f84bb33d 100644 --- a/source/blender/editors/animation/keyframes_general.c +++ b/source/blender/editors/animation/keyframes_general.c @@ -757,7 +757,9 @@ EnumPropertyItem keyframe_paste_merge_items[] = { {0, NULL, 0, NULL, NULL}}; -/* This function pastes data from the keyframes copy/paste buffer */ +/* This function pastes data from the keyframes copy/paste buffer + * > return status code is whether the method FAILED to do anything + */ short paste_animedit_keys (bAnimContext *ac, ListBase *anim_data, const eKeyPasteOffset offset_mode, const eKeyMergeMode merge_mode) { @@ -773,17 +775,17 @@ short paste_animedit_keys (bAnimContext *ac, ListBase *anim_data, /* check if buffer is empty */ if (animcopybuf.first == NULL) { - BKE_report(ac->reports, RPT_WARNING, "No data in buffer to paste"); + BKE_report(ac->reports, RPT_ERROR, "No animation data in buffer to paste"); return -1; } if (anim_data->first == NULL) { - BKE_report(ac->reports, RPT_WARNING, "No FCurves to paste into"); + BKE_report(ac->reports, RPT_ERROR, "No selected F-Curves to paste into"); return -1; } /* mathods of offset */ - switch(offset_mode) { + switch (offset_mode) { case KEYFRAME_PASTE_OFFSET_CFRA_START: offset= (float)(CFRA - animcopy_firstframe); break; diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index eb29dfb2ce1..a044651652e 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -492,7 +492,6 @@ void ACTION_OT_copy (wmOperatorType *ot) ot->description= "Copy selected keyframes to the copy/paste buffer"; /* api callbacks */ -// ot->invoke= WM_operator_props_popup; // better wait for graph redo panel ot->exec= actkeys_copy_exec; ot->poll= ED_operator_action_active; @@ -510,10 +509,9 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op) /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; - - if (ac.reports==NULL) { - ac.reports= op->reports; - } + + /* ac.reports by default will be the global reports list, which won't show warnings */ + ac.reports= op->reports; /* paste keyframes */ if (ac.datatype == ANIMCONT_GPENCIL) { @@ -522,8 +520,8 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } else { + /* non-zero return means an error occurred while trying to paste */ if (paste_action_keys(&ac, offset_mode, merge_mode)) { - BKE_report(op->reports, RPT_ERROR, "No keyframes to paste"); return OPERATOR_CANCELLED; } } @@ -545,12 +543,14 @@ void ACTION_OT_paste (wmOperatorType *ot) ot->description= "Paste keyframes from copy/paste buffer for the selected channels, starting on the current frame"; /* api callbacks */ +// ot->invoke= WM_operator_props_popup; // better wait for action redo panel ot->exec= actkeys_paste_exec; ot->poll= ED_operator_action_active; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - + + /* props */ RNA_def_enum(ot->srna, "offset", keyframe_paste_offset_items, KEYFRAME_PASTE_OFFSET_CFRA_START, "Offset", "Paste time offset of keys"); RNA_def_enum(ot->srna, "merge", keyframe_paste_merge_items, KEYFRAME_PASTE_MERGE_MIX, "Type", "Method of merging pasted keys and existing"); } diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 455b1bc0bdf..460e46fce30 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -727,11 +727,10 @@ static int graphkeys_paste_exec(bContext *C, wmOperator *op) if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; - if(ac.reports==NULL) { - ac.reports= op->reports; - } + /* ac.reports by default will be the global reports list, which won't show warnings */ + ac.reports= op->reports; - /* paste keyframes */ + /* paste keyframes - non-zero return means an error occurred while trying to paste */ if (paste_graph_keys(&ac, offset_mode, merge_mode)) { return OPERATOR_CANCELLED; } |