[Bf-blender-cvs] [a1578f0] master: Metastrips: disallow making a metastrip with only one strip present.

Antony Riakiotakis noreply at git.blender.org
Thu Sep 4 16:59:46 CEST 2014


Commit: a1578f08dc442b0c64f05a1ab18ef0fd90a9f6e4
Author: Antony Riakiotakis
Date:   Thu Sep 4 16:59:18 2014 +0200
Branches: master
https://developer.blender.org/rBa1578f08dc442b0c64f05a1ab18ef0fd90a9f6e4

Metastrips: disallow making a metastrip with only one strip present.

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

M	source/blender/blenkernel/BKE_sequencer.h
M	source/blender/blenkernel/intern/sequencer.c
M	source/blender/editors/space_sequencer/sequencer_edit.c

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

diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index de52c72..13cc5d2 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -308,7 +308,7 @@ void BKE_sequencer_offset_animdata(struct Scene *scene, struct Sequence *seq, in
 void BKE_sequencer_dupe_animdata(struct Scene *scene, const char *name_src, const char *name_dst);
 bool BKE_sequence_base_shuffle(struct ListBase *seqbasep, struct Sequence *test, struct Scene *evil_scene);
 bool BKE_sequence_base_shuffle_time(ListBase *seqbasep, struct Scene *evil_scene);
-bool BKE_sequence_base_isolated_sel_check(struct ListBase *seqbase);
+bool BKE_sequence_base_isolated_sel_check(struct ListBase *seqbase, bool one_only);
 void BKE_sequencer_free_imbuf(struct Scene *scene, struct ListBase *seqbasep, bool for_render);
 struct Sequence *BKE_sequence_dupli_recursive(struct Scene *scene, struct Scene *scene_to, struct Sequence *seq, int dupe_flag);
 int BKE_sequence_swap(struct Sequence *seq_a, struct Sequence *seq_b, const char **error_str);
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index dedf5e8..c9647b0 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3513,16 +3513,28 @@ bool BKE_sequence_single_check(Sequence *seq)
 }
 
 /* check if the selected seq's reference unselected seq's */
-bool BKE_sequence_base_isolated_sel_check(ListBase *seqbase)
+bool BKE_sequence_base_isolated_sel_check(ListBase *seqbase, bool one_only)
 {
 	Sequence *seq;
-	/* is there more than 1 select */
+	/* is there a valid selection select */
 	bool ok = false;
+	/* is there one selected already? */
+	bool first = false;
 
 	for (seq = seqbase->first; seq; seq = seq->next) {
 		if (seq->flag & SELECT) {
-			ok = true;
-			break;
+			if (one_only) {
+				ok = true;
+				break;
+			}
+			else {
+				if (first) {
+					ok = true;
+					break;
+				} 
+				else
+					first = true;
+			}
 		}
 	}
 
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index dcf13db..9c43d22 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -2059,8 +2059,8 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
 	Sequence *seq, *seqm, *next, *last_seq = BKE_sequencer_active_get(scene);
 	int channel_max = 1;
 
-	if (BKE_sequence_base_isolated_sel_check(ed->seqbasep) == false) {
-		BKE_report(op->reports, RPT_ERROR, "Please select all related strips");
+	if (BKE_sequence_base_isolated_sel_check(ed->seqbasep, false) == false) {
+		BKE_report(op->reports, RPT_ERROR, "Please select more than one or all related strips");
 		return OPERATOR_CANCELLED;
 	}
 
@@ -2767,7 +2767,7 @@ static int sequencer_copy_exec(bContext *C, wmOperator *op)
 
 	BKE_sequencer_free_clipboard();
 
-	if (BKE_sequence_base_isolated_sel_check(ed->seqbasep) == false) {
+	if (BKE_sequence_base_isolated_sel_check(ed->seqbasep, true) == false) {
 		BKE_report(op->reports, RPT_ERROR, "Please select all related strips");
 		return OPERATOR_CANCELLED;
 	}




More information about the Bf-blender-cvs mailing list