Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/space_sequencer/sequencer_draw.c')
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c38
1 files changed, 36 insertions, 2 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index 3249eae8c7f..63449193cba 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -1818,6 +1818,30 @@ static ImBuf *sequencer_get_scope(Scene *scene, SpaceSeq *sseq, ImBuf *ibuf, boo
return scope;
}
+static bool sequencer_draw_get_transform_preview(SpaceSeq *sseq, Scene *scene)
+{
+ Sequence *last_seq = SEQ_select_active_get(scene);
+
+ return (G.moving & G_TRANSFORM_SEQ) && (last_seq->flag & SELECT) &&
+ ((last_seq->flag & SEQ_LEFTSEL) || (last_seq->flag & SEQ_RIGHTSEL)) &&
+ (sseq->draw_flag & SEQ_DRAW_TRANSFORM_PREVIEW);
+}
+
+static int sequencer_draw_get_transform_preview_frame(Scene *scene)
+{
+ Sequence *last_seq = SEQ_select_active_get(scene);
+ int preview_frame;
+
+ if (last_seq->flag & SEQ_RIGHTSEL) {
+ preview_frame = last_seq->enddisp - 1;
+ }
+ else {
+ preview_frame = last_seq->startdisp;
+ }
+
+ return preview_frame;
+}
+
void sequencer_draw_preview(const bContext *C,
Scene *scene,
ARegion *region,
@@ -1842,9 +1866,14 @@ void sequencer_draw_preview(const bContext *C,
return;
}
+ int preview_frame = timeline_frame;
+ if (sequencer_draw_get_transform_preview(sseq, scene)) {
+ preview_frame = sequencer_draw_get_transform_preview_frame(scene);
+ }
+
/* Get image. */
ibuf = sequencer_ibuf_get(
- bmain, region, depsgraph, scene, sseq, timeline_frame, offset, names[sseq->multiview_eye]);
+ bmain, region, depsgraph, scene, sseq, preview_frame, offset, names[sseq->multiview_eye]);
/* Setup off-screen buffers. */
GPUViewport *viewport = WM_draw_region_get_viewport(region);
@@ -2356,7 +2385,12 @@ void draw_timeline_seq(const bContext *C, ARegion *region)
/* Only draw backdrop in timeline view. */
if (sseq->view == SEQ_VIEW_SEQUENCE && sseq->draw_flag & SEQ_DRAW_BACKDROP) {
- sequencer_draw_preview(C, scene, region, sseq, scene->r.cfra, 0, false, true);
+ int preview_frame = scene->r.cfra;
+ if (sequencer_draw_get_transform_preview(sseq, scene)) {
+ preview_frame = sequencer_draw_get_transform_preview_frame(scene);
+ }
+
+ sequencer_draw_preview(C, scene, region, sseq, preview_frame, 0, false, true);
UI_view2d_view_ortho(v2d);
}