[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29547] trunk/blender/source/blender/ blenkernel/intern/object.c: Fix #22625

Diego Borghetti bdiego at gmail.com
Fri Jun 18 17:23:39 CEST 2010


Revision: 29547
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29547
Author:   bdiego
Date:     2010-06-18 17:23:39 +0200 (Fri, 18 Jun 2010)

Log Message:
-----------
Fix #22625

My fix for #22317 make that every time you delete an object,
blender go to perspective view, fixed now.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/object.c

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2010-06-18 14:45:29 UTC (rev 29546)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2010-06-18 15:23:39 UTC (rev 29547)
@@ -337,7 +337,7 @@
 	ModifierData *md;
 	ARegion *ar;
 	RegionView3D *rv3d;
-	int a;
+	int a, found;
 	
 	unlink_controllers(&ob->controllers);
 	unlink_actuators(&ob->actuators);
@@ -609,28 +609,37 @@
 		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;
 
+					found= 0;
 					if(v3d->camera==ob) {
 						v3d->camera= NULL;
+						found= 1;
 					}
 					if(v3d->localvd && v3d->localvd->camera==ob ) {
 						v3d->localvd->camera= NULL;
+						found += 2;
 					}
+
+					if (found) {
+						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 (found == 1 || found == 3) {
+										if (rv3d->persp == RV3D_CAMOB)
+											rv3d->persp= RV3D_PERSP;
+									}
+									if (found == 2 || found == 3) {
+										if (rv3d->localvd && rv3d->localvd->persp == RV3D_CAMOB)
+											rv3d->localvd->persp= RV3D_PERSP;
+									}
+								}
+							}
+						}
+					}
 				}
 				else if(sl->spacetype==SPACE_OUTLINER) {
 					SpaceOops *so= (SpaceOops *)sl;





More information about the Bf-blender-cvs mailing list