diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-11-08 06:44:52 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-11-08 06:44:52 +0300 |
commit | 85b9652258f515b7d0f0133df9166c4aae6136af (patch) | |
tree | c5dd63d580eacb9980a57f39f59e4d2a93ca6ed1 /source/blender/editors/space_view3d/view3d_view.c | |
parent | c300d58497f2eb51614e07101f7f08a25cc167a3 (diff) |
fix for glitches with quad-split view.
- Home or Numpad Period with smoothview disabled were not syncing up the other views.
- Disabling clip only disabled clip syncing but left clip enabled for all views.
- Clip was being calculated for every update even when not enabled.
- The perspective view was being used to copy settings from when changing box & clip settings, resetting the distance each time. Now use one of the aligned views instead.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_view.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_view.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 80de1cdc040..52fe0b2304d 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -180,6 +180,7 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d= CTX_wm_region_view3d(C); struct SmoothViewStore sms= {0}; + short ok= FALSE; /* initialize sms */ copy_v3_v3(sms.new_ofs, rv3d->ofs); @@ -269,18 +270,26 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo /* TIMER1 is hardcoded in keymap */ rv3d->smooth_timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER1, 1.0/100.0); /* max 30 frs/sec */ - return; + ok= TRUE; } } /* if we get here nothing happens */ - if(sms.to_camera==0) { - copy_v3_v3(rv3d->ofs, sms.new_ofs); - copy_qt_qt(rv3d->viewquat, sms.new_quat); - rv3d->dist = sms.new_dist; - v3d->lens = sms.new_lens; + if(ok == FALSE) { + ARegion *ar= CTX_wm_region(C); + + if(sms.to_camera==0) { + copy_v3_v3(rv3d->ofs, sms.new_ofs); + copy_qt_qt(rv3d->viewquat, sms.new_quat); + rv3d->dist = sms.new_dist; + v3d->lens = sms.new_lens; + } + + if(rv3d->viewlock & RV3D_BOXVIEW) + view3d_boxview_copy(CTX_wm_area(C), ar); + + ED_region_tag_redraw(ar); } - ED_region_tag_redraw(CTX_wm_region(C)); } /* only meant for timer usage */ |