diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-05-03 20:38:20 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-05-03 20:38:20 +0300 |
commit | 568514c875d47def3bd05c89b4c03c7a1ece35bc (patch) | |
tree | abcaacfc139519169f6e776d298354ba4425a53d /source/blender/editors/space_view3d/view3d_edit.c | |
parent | 9d3d9ac0b90deceb6020652f931ea3a0b7099b2f (diff) |
Fix T48340: Smooth view cancels previous view action
Previously users needed to wait for view orbit to finished,
so quickly pressing keys would gave different result.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_edit.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 8ca7331fb37..ca0c6230f49 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -2838,6 +2838,8 @@ static void view3d_from_minmax(bContext *C, View3D *v3d, ARegion *ar, float afm[3]; float size; + ED_view3d_smooth_view_finish(C, v3d, ar); + /* SMOOTHVIEW */ float new_ofs[3]; float new_dist; @@ -3196,6 +3198,8 @@ static int viewcenter_cursor_exec(bContext *C, wmOperator *op) ARegion *ar = CTX_wm_region(C); const int smooth_viewtx = WM_operator_smooth_viewtx_get(op); + ED_view3d_smooth_view_finish(C, v3d, ar); + /* non camera center */ float new_ofs[3]; negate_v3_v3(new_ofs, ED_view3d_cursor3d_get(scene, v3d)); @@ -3235,6 +3239,8 @@ static int viewcenter_pick_invoke(bContext *C, wmOperator *op, const wmEvent *ev float new_ofs[3]; const int smooth_viewtx = WM_operator_smooth_viewtx_get(op); + ED_view3d_smooth_view_finish(C, v3d, ar); + view3d_operator_needs_opengl(C); if (ED_view3d_autodist(scene, ar, v3d, event->mval, new_ofs, false, NULL)) { @@ -3840,6 +3846,8 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) ED_view3d_context_user_region(C, &v3d, &ar); rv3d = ar->regiondata; + ED_view3d_smooth_view_finish(C, v3d, ar); + viewnum = RNA_enum_get(op->ptr, "type"); align_active = RNA_boolean_get(op->ptr, "align_active"); @@ -3990,6 +3998,8 @@ static int vieworbit_exec(bContext *C, wmOperator *op) rv3d = ar->regiondata; } + ED_view3d_smooth_view_finish(C, v3d, ar); + if ((rv3d->viewlock & RV3D_LOCKED) == 0 || (view_opposite != RV3D_VIEW_USER)) { if ((rv3d->persp != RV3D_CAMOB) || ED_view3d_camera_lock_check(v3d, rv3d)) { int smooth_viewtx = WM_operator_smooth_viewtx_get(op); @@ -4195,6 +4205,9 @@ static int viewroll_exec(bContext *C, wmOperator *op) rv3d = ar->regiondata; if ((rv3d->persp != RV3D_CAMOB) || ED_view3d_camera_lock_check(v3d, rv3d)) { + + ED_view3d_smooth_view_finish(C, v3d, ar); + int type = RNA_enum_get(op->ptr, "type"); float angle = (type == 0) ? RNA_float_get(op->ptr, "angle") : DEG2RADF(U.pad_rot_angle); float mousevec[3]; |