diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-03-18 16:54:41 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-03-19 09:02:29 +0400 |
commit | 19e627cab34a04a3d01b2e3a868b7bf91d56e8f9 (patch) | |
tree | 2b01e4e108bebcf0954bb58fe734a65bc514e279 /source/blender/editors/space_view3d/view3d_edit.c | |
parent | 2525f9c5f31e90bcb8f2e8c84558a2bc35e3207c (diff) |
Backport revisions for the final 2.70 releasev2.70
e6a359a, 9437927, a205700, d908c90, a6e3471, deef641,
4080673, 0141265, 0c6e744, f959e3d, ade6646, caf5d90,
5febb09, d08e6ab, 22873ea, 3d031d1, c450ea2, 60cab47,
ed26edb, df25dbf, f127f49.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_edit.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 55950579637..ea81bb2b857 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1049,6 +1049,7 @@ static int viewrotate_modal(bContext *C, wmOperator *op, const wmEvent *event) static void view3d_ensure_persp(struct View3D *v3d, ARegion *ar) { RegionView3D *rv3d = ar->regiondata; + const bool autopersp = (U.uiflag & USER_AUTOPERSP) != 0; BLI_assert((rv3d->viewlock & RV3D_LOCKED) == 0); @@ -1057,9 +1058,11 @@ static void view3d_ensure_persp(struct View3D *v3d, ARegion *ar) if (rv3d->persp != RV3D_PERSP) { if (rv3d->persp == RV3D_CAMOB) { - view3d_persp_switch_from_camera(v3d, rv3d, rv3d->lpersp); + /* If autopersp and previous view was an axis one, switch back to PERSP mode, else reuse previous mode. */ + char persp = (autopersp && RV3D_VIEW_IS_AXIS(rv3d->lview)) ? RV3D_PERSP : rv3d->lpersp; + view3d_persp_switch_from_camera(v3d, rv3d, persp); } - else if ((U.uiflag & USER_AUTOPERSP) && RV3D_VIEW_IS_AXIS(rv3d->view)) { + else if (autopersp && RV3D_VIEW_IS_AXIS(rv3d->view)) { rv3d->persp = RV3D_PERSP; } } |