From e2bc4ca9cee0c66c10efb9cf552c1135f30e7a4b Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Wed, 9 Jun 2010 15:35:10 +0000 Subject: Fix #22317 View reamins in camera's view after camera is deleted (again) The problem was not in the editors, the code in blenkernel have a XXX in the perspective value. Now unlink_object also update the ARegion. --- source/blender/blenkernel/intern/object.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index c544e27a102..ac4fd28bd28 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -320,6 +320,7 @@ static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Objec ob->recalc |= OB_RECALC; } } + void unlink_object(Scene *scene, Object *ob) { Object *obt; @@ -334,6 +335,8 @@ void unlink_object(Scene *scene, Object *ob) bConstraint *con; //bActionStrip *strip; // XXX animsys ModifierData *md; + ARegion *ar; + RegionView3D *rv3d; int a; unlink_controllers(&ob->controllers); @@ -606,17 +609,27 @@ void unlink_object(Scene *scene, Object *ob) while(sa) { SpaceLink *sl; + if (sa->spacetype == SPACE_VIEW3D) { + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar->regiontype==RGN_TYPE_WINDOW) { + rv3d= (RegionView3D *)ar->regiondata; + if (rv3d->persp == RV3D_CAMOB) + rv3d->persp= RV3D_PERSP; + if (rv3d->localvd && rv3d->localvd->persp == RV3D_CAMOB) + rv3d->localvd->persp= RV3D_PERSP; + } + } + } + for (sl= sa->spacedata.first; sl; sl= sl->next) { if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; if(v3d->camera==ob) { v3d->camera= NULL; - // XXX if(v3d->persp==V3D_CAMOB) v3d->persp= V3D_PERSP; } if(v3d->localvd && v3d->localvd->camera==ob ) { v3d->localvd->camera= NULL; - // XXX if(v3d->localvd->persp==V3D_CAMOB) v3d->localvd->persp= V3D_PERSP; } } else if(sl->spacetype==SPACE_OUTLINER) { -- cgit v1.2.3