diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2020-02-17 19:33:29 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2020-02-17 19:33:29 +0300 |
commit | a33b261473e95de8d8d438dbb6aa7afe513fb082 (patch) | |
tree | 3f96f6b3e463141382264f8325c019eb24365044 /source/blender/editors/transform/transform_generics.c | |
parent | 847bb4c4e0c35a4f617d75a700f79932e310c6db (diff) |
Fix T71455, T73852, T73860: Transform, Redo doesn't work properly in time editors
The redo panel does not consider the position of the mouse.
So it is not possible to know the direction to redo the operator.
The solution is to add a new `direction` parameter that can be
saved and used for redo.
Differential Revision: https://developer.blender.org/D6852
Diffstat (limited to 'source/blender/editors/transform/transform_generics.c')
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index d39ea6f14d7..00f34a20cb6 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1374,6 +1374,24 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve bGPdata *gpd = CTX_data_gpencil_data(C); PropertyRNA *prop; + if (op && (prop = RNA_struct_find_property(op->ptr, "center_override")) && + RNA_property_is_set(op->ptr, prop)) { + RNA_property_float_get_array(op->ptr, prop, t->center_global); + mul_v3_v3(t->center_global, t->aspect); + t->flag |= T_OVERRIDE_CENTER; + } + + if (op && (prop = RNA_struct_find_property(op->ptr, "mouse_coordinate_override")) && + RNA_property_is_set(op->ptr, prop)) { + RNA_property_int_get_array(op->ptr, prop, t->mval); + } + else if (event) { + copy_v2_v2_int(t->mval, event->mval); + } + else { + zero_v2_int(t->mval); + } + t->depsgraph = CTX_data_depsgraph_pointer(C); t->scene = sce; t->view_layer = view_layer; @@ -1402,21 +1420,12 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve t->redraw = TREDRAW_HARD; /* redraw first time */ - if (event) { - t->mouse.imval[0] = event->mval[0]; - t->mouse.imval[1] = event->mval[1]; - } - else { - t->mouse.imval[0] = 0; - t->mouse.imval[1] = 0; - } + t->mouse.imval[0] = t->mval[0]; + t->mouse.imval[1] = t->mval[1]; t->con.imval[0] = t->mouse.imval[0]; t->con.imval[1] = t->mouse.imval[1]; - t->mval[0] = t->mouse.imval[0]; - t->mval[1] = t->mouse.imval[1]; - t->transform = NULL; t->handleEvent = NULL; @@ -1771,13 +1780,6 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve setTransformViewAspect(t, t->aspect); - if (op && (prop = RNA_struct_find_property(op->ptr, "center_override")) && - RNA_property_is_set(op->ptr, prop)) { - RNA_property_float_get_array(op->ptr, prop, t->center_global); - mul_v3_v3(t->center_global, t->aspect); - t->flag |= T_OVERRIDE_CENTER; - } - setTransformViewMatrices(t); initNumInput(&t->num); } |