VSE: add movie strips on top of audio
authorRichard Antalik <richardantalik@gmail.com>
Sun, 19 May 2019 18:21:37 +0000 (11:21 -0700)
committerRichard Antalik <richardantalik@gmail.com>
Sun, 19 May 2019 18:55:03 +0000 (11:55 -0700)
- add movies to channel above free slot (no check for 2 free slots),
  add sound to the free slot
- don't override channel settings if `channel` property is set

This is just a hack. Propper implementation should be done along with T59540

Reviewed By: brecht

Differential Revision: https://developer.blender.org/T59540

source/blender/blenkernel/intern/sequencer.c
source/blender/editors/space_sequencer/sequencer_add.c

index 99536b9..c7dd5db 100644 (file)
@@ -5668,12 +5668,12 @@ Sequence *BKE_sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoad
 
   if (seq_load->flag & SEQ_LOAD_MOVIE_SOUND) {
     int start_frame_back = seq_load->start_frame;
-    seq_load->channel++;
+    seq_load->channel--;
 
     seq_load->seq_sound = BKE_sequencer_add_sound_strip(C, seqbasep, seq_load);
 
     seq_load->start_frame = start_frame_back;
-    seq_load->channel--;
+    seq_load->channel++;
   }
 
   /* can be NULL */
index b5bb79f..e8f18ee 100644 (file)
@@ -149,7 +149,7 @@ static int sequencer_generic_invoke_xy_guess_channel(bContext *C, int type)
   int proximity = INT_MAX;
 
   if (!ed || !ed->seqbasep) {
-    return 1;
+    return 2;
   }
 
   for (seq = ed->seqbasep->first; seq; seq = seq->next) {
@@ -161,9 +161,9 @@ static int sequencer_generic_invoke_xy_guess_channel(bContext *C, int type)
   }
 
   if (tgt) {
-    return tgt->machine;
+    return tgt->machine + 1;
   }
-  return 1;
+  return 2;
 }
 
 static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, int flag, int type)
@@ -173,7 +173,7 @@ static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, i
   int cfra = (int)CFRA;
 
   /* effect strips don't need a channel initialized from the mouse */
-  if (!(flag & SEQPROP_NOCHAN)) {
+  if (!(flag & SEQPROP_NOCHAN) && RNA_struct_property_is_set(op->ptr, "channel") == 0) {
     RNA_int_set(op->ptr, "channel", sequencer_generic_invoke_xy_guess_channel(C, type));
   }