diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 40cd368e02b..b52ff131b43 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -35,6 +35,7 @@ #include "BKE_context.h" #include "BKE_global.h" #include "BKE_main.h" +#include "BKE_report.h" #include "BKE_scene.h" #include "BKE_sequencer.h" @@ -299,7 +300,7 @@ static bool anim_set_end_frames_poll(bContext *C) return false; } -static int anim_set_sfra_exec(bContext *C, wmOperator *UNUSED(op)) +static int anim_set_sfra_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); int frame; @@ -315,6 +316,13 @@ static int anim_set_sfra_exec(bContext *C, wmOperator *UNUSED(op)) scene->r.psfra = frame; } else { + /* Clamping should be in sync with 'rna_Scene_start_frame_set()'. */ + int frame_clamped = frame; + CLAMP(frame_clamped, MINFRAME, MAXFRAME); + if (frame_clamped != frame) { + BKE_report(op->reports, RPT_WARNING, "Start frame clamped to valid rendering range"); + } + frame = frame_clamped; scene->r.sfra = frame; } @@ -347,7 +355,7 @@ static void ANIM_OT_start_frame_set(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } -static int anim_set_efra_exec(bContext *C, wmOperator *UNUSED(op)) +static int anim_set_efra_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); int frame; @@ -363,6 +371,13 @@ static int anim_set_efra_exec(bContext *C, wmOperator *UNUSED(op)) scene->r.pefra = frame; } else { + /* Clamping should be in sync with 'rna_Scene_end_frame_set()'. */ + int frame_clamped = frame; + CLAMP(frame_clamped, MINFRAME, MAXFRAME); + if (frame_clamped != frame) { + BKE_report(op->reports, RPT_WARNING, "End frame clamped to valid rendering range"); + } + frame = frame_clamped; scene->r.efra = frame; }