Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-11-16 12:35:58 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-11-16 12:35:58 +0300
commit5a1fdcdc2aad2543c2b615273baff0d8d0329096 (patch)
tree16df3c8505b41f6acce69f3d262f95e0701ff636 /source/blender/editors/space_view3d/view3d_edit.c
parent7f968521767ec0e99d26650047d16736126aaf53 (diff)
bugfix [#24746] Align Camera to View locks 3D Editor in Camera Perspective View
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_edit.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c39
1 files changed, 21 insertions, 18 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 5af548da170..3bfe4fa604a 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -733,7 +733,7 @@ static int viewrotate_modal(bContext *C, wmOperator *op, wmEvent *event)
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_modal(bContext *C, wmOperator *op, wmEvent *event)
static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
ViewOpsData *vod;
-
- if(rv3d->viewlock)
- return OPERATOR_CANCELLED;
+ RegionView3D *rv3d;
/* 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 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int viewmove_modal(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int viewmove_invoke(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int viewzoom_exec(bContext *C, wmOperator *op)
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 @@ static int viewzoom_invoke(bContext *C, wmOperator *op, wmEvent *event)
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;