diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2020-04-27 18:09:17 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2020-04-27 18:09:17 +0300 |
commit | 0a7dd1ec49378d4c02491f5e96f8e5073d01bde1 (patch) | |
tree | 250e670be5cfcd40500c40823f6bef7cfe2de7a5 | |
parent | b0f207db15c5698f11db1168d2882f056583d6d5 (diff) | |
parent | a4df7f78a8816ca463cb09f23ac64b989cd8ebb0 (diff) |
Merge branch 'blender-v2.83-release'
7 files changed, 28 insertions, 37 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index d0866968daa..d376c71d867 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1651,11 +1651,6 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) } } - if ((prop = RNA_struct_find_property(op->ptr, "center_override"))) { - /* Important for redo operations. */ - RNA_property_float_set_array(op->ptr, prop, t->center_global); - } - if (t->flag & T_PROP_EDIT_ALL) { if (t->flag & T_PROP_EDIT) { proportional |= PROP_EDIT_USE; diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c index f75c2c52756..ae71c0adacc 100644 --- a/source/blender/editors/transform/transform_convert.c +++ b/source/blender/editors/transform/transform_convert.c @@ -819,25 +819,29 @@ void clipUVData(TransInfo *t) * \{ */ /** - * For modal operation: `t->center_global` may not have been set yet. + * Used for `TFM_TIME_EXTEND`. */ -void transform_convert_center_global_v2(TransInfo *t, float r_center[2]) +char transform_convert_frame_side_dir_get(TransInfo *t, float cframe) { + char r_dir; + Scene *scene = t->scene; + float center[2]; if (t->flag & T_MODAL) { UI_view2d_region_to_view( - (View2D *)t->view, t->mouse.imval[0], t->mouse.imval[1], &r_center[0], &r_center[1]); + (View2D *)t->view, t->mouse.imval[0], t->mouse.imval[1], ¢er[0], ¢er[1]); + r_dir = (center[0] > cframe) ? 'R' : 'L'; + { + /* XXX: This saves the direction in the "mirror" property to be used for redo! */ + if (r_dir == 'R') { + t->flag |= T_NO_MIRROR; + } + } } else { - copy_v2_v2(r_center, t->center_global); + r_dir = (t->flag & T_NO_MIRROR) ? 'R' : 'L'; } -} -void transform_convert_center_global_v2_int(TransInfo *t, int r_center[2]) -{ - float center[2]; - transform_convert_center_global_v2(t, center); - r_center[0] = round_fl_to_int(center[0]); - r_center[1] = round_fl_to_int(center[1]); + return r_dir; } /* This function tests if a point is on the "mouse" side of the cursor/frame-marking */ diff --git a/source/blender/editors/transform/transform_convert.h b/source/blender/editors/transform/transform_convert.h index d616f24ba86..f975d320e62 100644 --- a/source/blender/editors/transform/transform_convert.h +++ b/source/blender/editors/transform/transform_convert.h @@ -104,8 +104,7 @@ void transform_around_single_fallback(TransInfo *t); bool constraints_list_needinv(TransInfo *t, ListBase *list); void calc_distanceCurveVerts(TransData *head, TransData *tail); struct TransDataCurveHandleFlags *initTransDataCurveHandles(TransData *td, struct BezTriple *bezt); -void transform_convert_center_global_v2(TransInfo *t, float r_center[2]); -void transform_convert_center_global_v2_int(TransInfo *t, int r_center[2]); +char transform_convert_frame_side_dir_get(TransInfo *t, float cframe); bool FrameOnMouseSide(char side, float frame, float cframe); /* transform_convert_action.c */ diff --git a/source/blender/editors/transform/transform_convert_action.c b/source/blender/editors/transform/transform_convert_action.c index c9273121df5..21ef1539911 100644 --- a/source/blender/editors/transform/transform_convert_action.c +++ b/source/blender/editors/transform/transform_convert_action.c @@ -331,10 +331,7 @@ void createTransActionData(bContext *C, TransInfo *t) /* which side of the current frame should be allowed */ if (t->mode == TFM_TIME_EXTEND) { - /* only side on which center is gets transformed */ - float center[2]; - transform_convert_center_global_v2(t, center); - t->frame_side = (center[0] > CFRA) ? 'R' : 'L'; + t->frame_side = transform_convert_frame_side_dir_get(t, (float)CFRA); } else { /* normal transform - both sides of current frame are considered */ diff --git a/source/blender/editors/transform/transform_convert_graph.c b/source/blender/editors/transform/transform_convert_graph.c index 5c2391d8dd0..f6f0dd3c491 100644 --- a/source/blender/editors/transform/transform_convert_graph.c +++ b/source/blender/editors/transform/transform_convert_graph.c @@ -261,10 +261,7 @@ void createTransGraphEditData(bContext *C, TransInfo *t) /* which side of the current frame should be allowed */ // XXX we still want this mode, but how to get this using standard transform too? if (t->mode == TFM_TIME_EXTEND) { - /* only side on which center is gets transformed */ - float center[2]; - transform_convert_center_global_v2(t, center); - t->frame_side = (center[0] > CFRA) ? 'R' : 'L'; + t->frame_side = transform_convert_frame_side_dir_get(t, (float)CFRA); } else { /* normal transform - both sides of current frame are considered */ diff --git a/source/blender/editors/transform/transform_convert_nla.c b/source/blender/editors/transform/transform_convert_nla.c index 580a8d79d7a..2978c36b15f 100644 --- a/source/blender/editors/transform/transform_convert_nla.c +++ b/source/blender/editors/transform/transform_convert_nla.c @@ -71,10 +71,7 @@ void createTransNlaData(bContext *C, TransInfo *t) /* which side of the current frame should be allowed */ if (t->mode == TFM_TIME_EXTEND) { - /* only side on which center is gets transformed */ - float center[2]; - transform_convert_center_global_v2(t, center); - t->frame_side = (center[0] > CFRA) ? 'R' : 'L'; + t->frame_side = transform_convert_frame_side_dir_get(t, (float)CFRA); } else { /* normal transform - both sides of current frame are considered */ diff --git a/source/blender/editors/transform/transform_convert_sequencer.c b/source/blender/editors/transform/transform_convert_sequencer.c index a722f17db22..0175bf6e673 100644 --- a/source/blender/editors/transform/transform_convert_sequencer.c +++ b/source/blender/editors/transform/transform_convert_sequencer.c @@ -31,6 +31,8 @@ #include "BKE_report.h" #include "BKE_sequencer.h" +#include "UI_view2d.h" + #include "transform.h" #include "transform_convert.h" @@ -541,10 +543,7 @@ void createTransSeqData(TransInfo *t) } tc->custom.type.free_cb = freeSeqData; - /* only side on which center is gets transformed */ - int center[2]; - transform_convert_center_global_v2_int(t, center); - t->frame_side = (center[0] > CFRA) ? 'R' : 'L'; + t->frame_side = transform_convert_frame_side_dir_get(t, (float)CFRA); #ifdef XXX_DURIAN_ANIM_TX_HACK { @@ -586,9 +585,12 @@ void createTransSeqData(TransInfo *t) SeqToTransData_Recursive(t, ed->seqbasep, td, td2d, tdsq); SeqTransDataBounds(t, ed->seqbasep, ts); - /* set the snap mode based on how close the mouse is at the end/start points */ - if (abs(center[0] - ts->max) > abs(center[0] - ts->min)) { - ts->snap_left = true; + if (t->flag & T_MODAL) { + /* set the snap mode based on how close the mouse is at the end/start points */ + int xmouse = (int)UI_view2d_region_to_view_x((View2D *)t->view, t->mouse.imval[0]); + if (abs(xmouse - ts->max) > abs(xmouse - ts->min)) { + ts->snap_left = true; + } } #undef XXX_DURIAN_ANIM_TX_HACK |