From aa123555d7a75c784f479b9572145f45862bcb2b Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Fri, 10 Jan 2020 13:33:25 +0100 Subject: Fix T73014: Marker sync does not work correctly if moving strip so it overlaps another strip Need to also offset markers in BKE_sequence_base_shuffle_time(). Also clarify/correct related comments. Maniphest Tasks: T73014 Differential Revision: https://developer.blender.org/D6555 --- source/blender/blenkernel/intern/sequencer.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'source/blender/blenkernel/intern/sequencer.c') diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 70ec3035c3c..747ce18cada 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -4919,7 +4919,10 @@ static int shuffle_seq_time_offset(Scene *scene, ListBase *seqbasep, char dir) return tot_ofs; } -bool BKE_sequence_base_shuffle_time(ListBase *seqbasep, Scene *evil_scene) +bool BKE_sequence_base_shuffle_time(ListBase *seqbasep, + Scene *evil_scene, + ListBase *markers, + const bool use_sync_markers) { /* note: seq->tmp is used to tag strips to move */ @@ -4936,6 +4939,16 @@ bool BKE_sequence_base_shuffle_time(ListBase *seqbasep, Scene *evil_scene) seq->flag &= ~SEQ_OVERLAP; } } + + if (use_sync_markers && !(evil_scene->toolsettings->lock_markers) && (markers != NULL)) { + TimeMarker *marker; + /* affect selected markers - it's unlikely that we will want to affect all in this way? */ + for (marker = markers->first; marker; marker = marker->next) { + if (marker->flag & SELECT) { + marker->frame += offset; + } + } + } } return offset ? false : true; -- cgit v1.2.3