Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Wed, 5 Sep 2018 02:14:53 +0000 (12:14 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 5 Sep 2018 02:14:53 +0000 (12:14 +1000)
1  2 
source/blender/editors/space_sequencer/sequencer_edit.c

index 199ff06cc8b05808a815adbe7c4090bfadd14920,cae626cd1f49605b112bfa2005dc7cfc83973074..083b4548b2970e237993eff4d6d50ebacdc9a341
@@@ -71,6 -71,7 +71,6 @@@
  #include "UI_view2d.h"
  #include "UI_interface.h"
  
 -
  /* own include */
  #include "sequencer_intern.h"
  
@@@ -100,8 -101,11 +100,11 @@@ EnumPropertyItem sequencer_prop_effect_
  
  /* mute operator */
  
+ #define SEQ_SIDE_MOUSE -1
  EnumPropertyItem prop_side_types[] = {
-       {SEQ_SIDE_LEFT, "LEFT", 0, "Left", ""},
+       {SEQ_SIDE_MOUSE, "MOUSE", 0, "Mouse position", "" },
+       {SEQ_SIDE_LEFT, "LEFT", 0, "Left", "" },
        {SEQ_SIDE_RIGHT, "RIGHT", 0, "Right", ""},
        {SEQ_SIDE_BOTH, "BOTH", 0, "Both", ""},
        {0, NULL, 0, NULL, NULL}
@@@ -128,9 -132,8 +131,9 @@@ typedef struct TransSeq 
  /* ***************** proxy job manager ********************** */
  
  typedef struct ProxyBuildJob {
 -      Scene *scene;
        struct Main *main;
 +      struct Depsgraph *depsgraph;
 +      Scene *scene;
        ListBase queue;
        int stop;
  } ProxyJob;
@@@ -182,7 -185,6 +185,7 @@@ static void seq_proxy_build_job(const b
  {
        wmJob *wm_job;
        ProxyJob *pj;
 +      struct Depsgraph *depsgraph = CTX_data_depsgraph(C);
        Scene *scene = CTX_data_scene(C);
        Editing *ed = BKE_sequencer_editing_get(scene, false);
        ScrArea *sa = CTX_wm_area(C);
        if (!pj) {
                pj = MEM_callocN(sizeof(ProxyJob), "proxy rebuild job");
  
 +              pj->depsgraph = depsgraph;
                pj->scene = scene;
                pj->main = CTX_data_main(C);
  
        SEQP_BEGIN (ed, seq)
        {
                if ((seq->flag & SELECT)) {
 -                      BKE_sequencer_proxy_rebuild_context(pj->main, pj->scene, seq, file_list, &pj->queue);
 +                      BKE_sequencer_proxy_rebuild_context(pj->main, pj->depsgraph, pj->scene, seq, file_list, &pj->queue);
                }
        }
        SEQ_END
@@@ -1290,6 -1291,7 +1293,6 @@@ typedef struct SlipData 
        int num_seq;
        bool slow;
        int slow_offset; /* offset at the point where offset was turned on */
 -      void *draw_handle;
        NumInput num_input;
  } SlipData;
  
@@@ -1324,6 -1326,21 +1327,6 @@@ static void transseq_restore(TransSeq *
        seq->len = ts->len;
  }
  
 -static void draw_slip_extensions(const bContext *C, ARegion *ar, void *data)
 -{
 -      Scene *scene = CTX_data_scene(C);
 -      SlipData *td = data;
 -      int i;
 -
 -      for (i = 0; i < td->num_seq; i++) {
 -              Sequence *seq = td->seq_array[i];
 -
 -              if ((seq->type != SEQ_TYPE_META) && td->trim[i]) {
 -                      draw_sequence_extensions(scene, ar, seq);
 -              }
 -      }
 -}
 -
  static int slip_add_sequences_rec(ListBase *seqbasep, Sequence **seq_array, bool *trim, int offset, bool do_trim)
  {
        Sequence *seq;
@@@ -1372,6 -1389,7 +1375,6 @@@ static int sequencer_slip_invoke(bConte
        SlipData *data;
        Scene *scene = CTX_data_scene(C);
        Editing *ed = BKE_sequencer_editing_get(scene, false);
 -      ARegion *ar = CTX_wm_region(C);
        float mouseloc[2];
        int num_seq, i;
        View2D *v2d = UI_view2d_fromcontext(C);
                transseq_backup(data->ts + i, data->seq_array[i]);
        }
  
 -      data->draw_handle = ED_region_draw_cb_activate(ar->type, draw_slip_extensions, data, REGION_DRAW_POST_VIEW);
 -
        UI_view2d_region_to_view(v2d, event->mval[0], event->mval[1], &mouseloc[0], &mouseloc[1]);
  
        copy_v2_v2_int(data->init_mouse, event->mval);
@@@ -1534,7 -1554,7 +1537,7 @@@ static void sequencer_slip_update_heade
                }
        }
  
 -      ED_area_headerprint(sa, msg);
 +      ED_area_status_text(sa, msg);
  }
  
  static int sequencer_slip_modal(bContext *C, wmOperator *op, const wmEvent *event)
        Scene *scene = CTX_data_scene(C);
        SlipData *data = (SlipData *)op->customdata;
        ScrArea *sa = CTX_wm_area(C);
 -      ARegion *ar = CTX_wm_region(C);
        const bool has_numInput = hasNumInput(&data->num_input);
        bool handled = true;
  
                case RETKEY:
                case SPACEKEY:
                {
 -                      ED_region_draw_cb_exit(ar->type, data->draw_handle);
                        MEM_freeN(data->seq_array);
                        MEM_freeN(data->trim);
                        MEM_freeN(data->ts);
                        MEM_freeN(data);
                        op->customdata = NULL;
                        if (sa) {
 -                              ED_area_headerprint(sa, NULL);
 +                              ED_area_status_text(sa, NULL);
                        }
                        WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
                        return OPERATOR_FINISHED;
                                BKE_sequence_calc(scene, seq);
                        }
  
 -                      ED_region_draw_cb_exit(ar->type, data->draw_handle);
 -
                        MEM_freeN(data->seq_array);
                        MEM_freeN(data->ts);
                        MEM_freeN(data->trim);
                        BKE_sequencer_free_imbuf(scene, &ed->seqbase, false);
  
                        if (sa) {
 -                              ED_area_headerprint(sa, NULL);
 +                              ED_area_status_text(sa, NULL);
                        }
  
                        return OPERATOR_CANCELLED;
@@@ -2117,16 -2141,20 +2120,20 @@@ static int sequencer_cut_invoke(bContex
        Scene *scene = CTX_data_scene(C);
        View2D *v2d = UI_view2d_fromcontext(C);
  
-       int cut_side = SEQ_SIDE_BOTH;
+       int cut_side = RNA_enum_get(op->ptr, "side");
        int cut_frame = CFRA;
  
-       if (ED_operator_sequencer_active(C) && v2d)
-               cut_side = mouse_frame_side(v2d, event->mval[0], cut_frame);
+       if (cut_side == SEQ_SIDE_MOUSE) {
+               if (ED_operator_sequencer_active(C) && v2d) {
+                       cut_side = mouse_frame_side(v2d, event->mval[0], cut_frame);
+               }
+               else {
+                       cut_side = SEQ_SIDE_BOTH;
+               }
+       }
        RNA_int_set(op->ptr, "frame", cut_frame);
        RNA_enum_set(op->ptr, "side", cut_side);
        /*RNA_enum_set(op->ptr, "type", cut_hard); */ /*This type is set from the key shortcut */
        return sequencer_cut_exec(C, op);
  }
  
@@@ -2146,11 -2174,15 +2153,15 @@@ void SEQUENCER_OT_cut(struct wmOperator
        /* flags */
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
  
+       PropertyRNA *prop;
        RNA_def_int(ot->srna, "frame", 0, INT_MIN, INT_MAX, "Frame", "Frame where selected strips will be cut", INT_MIN, INT_MAX);
        RNA_def_enum(ot->srna, "type", prop_cut_types, SEQ_CUT_SOFT, "Type", "The type of cut operation to perform on strips");
-       RNA_def_enum(ot->srna, "side", prop_side_types, SEQ_SIDE_BOTH, "Side", "The side that remains selected after cutting");
+       prop = RNA_def_enum(ot->srna, "side", prop_side_types, SEQ_SIDE_MOUSE, "Side", "The side that remains selected after cutting");
+       RNA_def_property_flag(prop, PROP_SKIP_SAVE);
  }
  
+ #undef SEQ_SIDE_MOUSE
  /* duplicate operator */
  static int apply_unique_name_cb(Sequence *seq, void *arg_pt)
  {
@@@ -3460,7 -3492,6 +3471,7 @@@ static int sequencer_rebuild_proxy_invo
  static int sequencer_rebuild_proxy_exec(bContext *C, wmOperator *UNUSED(op))
  {
        Main *bmain = CTX_data_main(C);
 +      struct Depsgraph *depsgraph = CTX_data_depsgraph(C);
        Scene *scene = CTX_data_scene(C);
        Editing *ed = BKE_sequencer_editing_get(scene, false);
        Sequence *seq;
                        short stop = 0, do_update;
                        float progress;
  
 -                      BKE_sequencer_proxy_rebuild_context(bmain, scene, seq, file_list, &queue);
 +                      BKE_sequencer_proxy_rebuild_context(bmain, depsgraph, scene, seq, file_list, &queue);
  
                        for (link = queue.first; link; link = link->next) {
                                struct SeqIndexBuildContext *context = link->data;