[Bf-blender-cvs] [887da13] master: Sequencer: jump now takes end-points into account

Campbell Barton noreply at git.blender.org
Thu Oct 16 23:58:37 CEST 2014


Commit: 887da1345c5b73b93181d110eb67b435dff83000
Author: Campbell Barton
Date:   Thu Oct 16 23:17:20 2014 +0200
Branches: master
https://developer.blender.org/rB887da1345c5b73b93181d110eb67b435dff83000

Sequencer: jump now takes end-points into account

Useful because it's effectively the start-point for any strip which is obscured.

===================================================================

M	source/blender/editors/space_sequencer/sequencer_edit.c

===================================================================

diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index e19cd3e..3a57aef 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -2459,73 +2459,59 @@ static int find_next_prev_edit(Scene *scene, int cfra,
                                const bool do_skip_mute, const bool do_center)
 {
 	Editing *ed = BKE_sequencer_editing_get(scene, false);
-	Sequence *seq, *best_seq = NULL, *frame_seq = NULL;
+	Sequence *seq;
 	
-	int dist, best_dist;
+	int dist, best_dist, best_frame = cfra;
+	int seq_frames[2], seq_frames_tot;
+
 	best_dist = MAXFRAME * 2;
 
 	if (ed == NULL) return cfra;
 	
 	for (seq = ed->seqbasep->first; seq; seq = seq->next) {
-		int seq_frame;
+		int i;
 
 		if (do_skip_mute && (seq->flag & SEQ_MUTE)) {
 			continue;
 		}
 
 		if (do_center) {
-			seq_frame = (seq->startdisp + seq->enddisp) / 2;
+			seq_frames[0] = (seq->startdisp + seq->enddisp) / 2;
+			seq_frames_tot = 1;
 		}
 		else {
-			seq_frame = seq->startdisp;
-		}
+			seq_frames[0] = seq->startdisp;
+			seq_frames[1] = seq->enddisp;
 
-		dist = MAXFRAME * 2;
-			
-		switch (side) {
-			case SEQ_SIDE_LEFT:
-				if (seq_frame < cfra) {
-					dist = cfra - seq_frame;
-				}
-				break;
-			case SEQ_SIDE_RIGHT:
-				if (seq_frame > cfra) {
-					dist = seq_frame - cfra;
-				}
-				else if (seq_frame == cfra) {
-					frame_seq = seq;
-				}
-				break;
+			seq_frames_tot = 2;
 		}
 
-		if (dist < best_dist) {
-			best_dist = dist;
-			best_seq = seq;
-		}
-	}
+		for (i = 0; i < seq_frames_tot; i++) {
+			const int seq_frame = seq_frames[i];
 
-	/* if no sequence to the right is found and the
-	 * frame is on the start of the last sequence,
-	 * move to the end of the last sequence */
-	if (frame_seq) {
-		if (do_center) {
-			cfra = (frame_seq->startdisp + frame_seq->enddisp) / 2;
-		}
-		else {
-			cfra = frame_seq->enddisp;
-		}
-	}
+			dist = MAXFRAME * 2;
 
-	if (best_seq) {
-		if (do_center) {
-			cfra = (best_seq->startdisp + best_seq->enddisp) / 2;
-		}
-		else {
-			cfra = best_seq->startdisp;
+			switch (side) {
+				case SEQ_SIDE_LEFT:
+					if (seq_frame < cfra) {
+						dist = cfra - seq_frame;
+					}
+					break;
+				case SEQ_SIDE_RIGHT:
+					if (seq_frame > cfra) {
+						dist = seq_frame - cfra;
+					}
+					break;
+			}
+
+			if (dist < best_dist) {
+				best_frame = seq_frame;
+				best_dist = dist;
+			}
 		}
 	}
 
-	return cfra;
+	return best_frame;
 }
 
 static bool strip_jump_internal(Scene *scene,




More information about the Bf-blender-cvs mailing list