diff --git a/source/blender/editors/transform/transform_snap_sequencer.cc b/source/blender/editors/transform/transform_snap_sequencer.cc index 9741f2a741e..54175964ba2 100644 --- a/source/blender/editors/transform/transform_snap_sequencer.cc +++ b/source/blender/editors/transform/transform_snap_sequencer.cc @@ -65,10 +65,10 @@ static bool seq_snap_source_points_build(const Scene *scene, int i = 0; for (Sequence *seq : snap_sources) { int left = 0, right = 0; - if (seq->flag & SEQ_LEFTSEL) { + if (seq->flag & SEQ_LEFTSEL && !(seq->flag & SEQ_RIGHTSEL)) { left = right = SEQ_time_left_handle_frame_get(scene, seq); } - else if (seq->flag & SEQ_RIGHTSEL) { + else if (seq->flag & SEQ_RIGHTSEL && !(seq->flag & SEQ_LEFTSEL)) { left = right = SEQ_time_right_handle_frame_get(scene, seq); } else { @@ -207,10 +207,9 @@ static bool seq_snap_target_points_build(Scene *scene, i += 2; if (snap_mode & SEQ_SNAP_TO_STRIP_HOLD) { - int content_start = min_ii(SEQ_time_left_handle_frame_get(scene, seq), - SEQ_time_start_frame_get(seq)); - int content_end = max_ii(SEQ_time_right_handle_frame_get(scene, seq), - SEQ_time_content_end_frame_get(scene, seq)); + int content_start = SEQ_time_start_frame_get(seq); + int content_end = SEQ_time_content_end_frame_get(scene, seq); + /* Effects and single image strips produce incorrect content length. Skip these strips. */ if ((seq->type & SEQ_TYPE_EFFECT) != 0 || seq->len == 1) { content_start = SEQ_time_left_handle_frame_get(scene, seq);