[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