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:
authorDiego Borghetti <bdiego@gmail.com>2010-06-09 19:35:10 +0400
committerDiego Borghetti <bdiego@gmail.com>2010-06-09 19:35:10 +0400
commite2bc4ca9cee0c66c10efb9cf552c1135f30e7a4b (patch)
tree34c0e88f6e5b8134bee1528b7eae1aeb443b63b6 /source/blender/blenkernel
parent1a3686701736cd60defc2e034f5e3806845291bf (diff)
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.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/object.c17
1 files changed, 15 insertions, 2 deletions
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) {