[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33095] trunk/blender/source/blender: bugfix [#24746] Align Camera to View locks 3D Editor in Camera Perspective View
Campbell Barton
ideasman42 at gmail.com
Tue Nov 16 10:35:58 CET 2010
Revision: 33095
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33095
Author: campbellbarton
Date: 2010-11-16 10:35:58 +0100 (Tue, 16 Nov 2010)
Log Message:
-----------
bugfix [#24746] Align Camera to View locks 3D Editor in Camera Perspective View
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
trunk/blender/source/blender/editors/space_view3d/view3d_view.c
trunk/blender/source/blender/makesdna/DNA_view3d_types.h
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c 2010-11-16 08:53:55 UTC (rev 33094)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c 2010-11-16 09:35:58 UTC (rev 33095)
@@ -733,7 +733,7 @@
viewrotate_apply(vod, event->x, event->y);
}
else if (event_code==VIEW_CONFIRM) {
- request_depth_update(CTX_wm_region_view3d(C));
+ request_depth_update(vod->rv3d);
viewops_data_free(C, op);
return OPERATOR_FINISHED;
@@ -744,33 +744,36 @@
static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
ViewOpsData *vod;
+ RegionView3D *rv3d;
- if(rv3d->viewlock)
- return OPERATOR_CANCELLED;
-
/* makes op->customdata */
viewops_data_create(C, op, event);
vod= op->customdata;
+ rv3d= vod->rv3d;
+ if(rv3d->viewlock) { /* poll should check but in some cases fails, see poll func for details */
+ viewops_data_free(C, op);
+ return OPERATOR_CANCELLED;
+ }
+
/* switch from camera view when: */
- if(vod->rv3d->persp != RV3D_PERSP) {
+ if(rv3d->persp != RV3D_PERSP) {
if (U.uiflag & USER_AUTOPERSP) {
- vod->rv3d->persp= RV3D_PERSP;
+ rv3d->persp= RV3D_PERSP;
}
- else if(vod->rv3d->persp==RV3D_CAMOB) {
+ else if(rv3d->persp==RV3D_CAMOB) {
/* changed since 2.4x, use the camera view */
- View3D *v3d = CTX_wm_view3d(C);
+ View3D *v3d = vod->sa->spacedata.first;
if(v3d->camera) {
view3d_settings_from_ob(v3d->camera, rv3d->ofs, rv3d->viewquat, &rv3d->dist, NULL);
}
- if(vod->rv3d->persp==RV3D_CAMOB) {
- vod->rv3d->persp= vod->rv3d->lpersp;
+ if(rv3d->persp==RV3D_CAMOB) {
+ rv3d->persp= rv3d->lpersp;
}
}
ED_region_tag_redraw(vod->ar);
@@ -778,7 +781,7 @@
if (event->type == MOUSEPAN) {
viewrotate_apply(vod, event->prevx, event->prevy);
- request_depth_update(CTX_wm_region_view3d(C));
+ request_depth_update(rv3d);
viewops_data_free(C, op);
@@ -787,7 +790,7 @@
else if (event->type == MOUSEROTATE) {
/* MOUSEROTATE performs orbital rotation, so y axis delta is set to 0 */
viewrotate_apply(vod, event->prevx, event->y);
- request_depth_update(CTX_wm_region_view3d(C));
+ request_depth_update(rv3d);
viewops_data_free(C, op);
@@ -945,7 +948,7 @@
viewmove_apply(vod, event->x, event->y);
}
else if (event_code==VIEW_CONFIRM) {
- request_depth_update(CTX_wm_region_view3d(C));
+ request_depth_update(vod->rv3d);
viewops_data_free(C, op);
@@ -963,7 +966,7 @@
if (event->type == MOUSEPAN) {
ViewOpsData *vod= op->customdata;
viewmove_apply(vod, event->prevx, event->prevy);
- request_depth_update(CTX_wm_region_view3d(C));
+ request_depth_update(vod->rv3d);
viewops_data_free(C, op);
@@ -1177,7 +1180,7 @@
viewzoom_apply(vod, event->x, event->y, U.viewzoom);
}
else if (event_code==VIEW_CONFIRM) {
- request_depth_update(CTX_wm_region_view3d(C));
+ request_depth_update(vod->rv3d);
viewops_data_free(C, op);
return OPERATOR_FINISHED;
@@ -1217,7 +1220,7 @@
if(rv3d->viewlock & RV3D_BOXVIEW)
view3d_boxview_sync(CTX_wm_area(C), CTX_wm_region(C));
- request_depth_update(CTX_wm_region_view3d(C));
+ request_depth_update(rv3d);
ED_region_tag_redraw(CTX_wm_region(C));
viewops_data_free(C, op);
@@ -1263,7 +1266,7 @@
vod->origy = vod->oldy = vod->origy + event->x - event->prevx;
viewzoom_apply(vod, event->prevx, event->prevy, USER_ZOOM_DOLLY);
}
- request_depth_update(CTX_wm_region_view3d(C));
+ request_depth_update(vod->rv3d);
viewops_data_free(C, op);
return OPERATOR_FINISHED;
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_view.c 2010-11-16 08:53:55 UTC (rev 33094)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c 2010-11-16 09:35:58 UTC (rev 33095)
@@ -406,7 +406,9 @@
copy_qt_qt(rv3d->lviewquat, rv3d->viewquat);
rv3d->lview= rv3d->view;
- rv3d->lpersp= rv3d->persp;
+ if(rv3d->persp != RV3D_CAMOB) {
+ rv3d->lpersp= rv3d->persp;
+ }
setcameratoview3d(rv3d, v3d->camera);
rv3d->persp = RV3D_CAMOB;
Modified: trunk/blender/source/blender/makesdna/DNA_view3d_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_view3d_types.h 2010-11-16 08:53:55 UTC (rev 33094)
+++ trunk/blender/source/blender/makesdna/DNA_view3d_types.h 2010-11-16 09:35:58 UTC (rev 33095)
@@ -120,7 +120,7 @@
/* last view */
float lviewquat[4];
- short lpersp, lview;
+ short lpersp, lview; /* lpersp can never be set to 'RV3D_CAMOB' */
float gridview;
float twangle[3];
More information about the Bf-blender-cvs
mailing list