[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31944] trunk/blender/source/blender/ editors: bugfix [#23830] Border selecting bones in editmode bug

Campbell Barton ideasman42 at gmail.com
Wed Sep 15 15:07:36 CEST 2010


Revision: 31944
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31944
Author:   campbellbarton
Date:     2010-09-15 15:07:36 +0200 (Wed, 15 Sep 2010)

Log Message:
-----------
bugfix [#23830] Border selecting bones in editmode bug
was missing a call to glLoadName(-1); so drawing commands after the bone were taken into account with the selection.

made some other minor changes that dont change functionality.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_armature.h
    trunk/blender/source/blender/editors/space_view3d/drawarmature.c

Modified: trunk/blender/source/blender/editors/include/ED_armature.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_armature.h	2010-09-15 12:18:50 UTC (rev 31943)
+++ trunk/blender/source/blender/editors/include/ED_armature.h	2010-09-15 13:07:36 UTC (rev 31944)
@@ -78,12 +78,12 @@
 	short segments;
 } EditBone;
 
-#define	BONESEL_ROOT	0x10000000
-#define	BONESEL_TIP		0x20000000
-#define	BONESEL_BONE	0x40000000
+#define	BONESEL_ROOT	(1<<28)
+#define	BONESEL_TIP		(1<<29)
+#define	BONESEL_BONE	(1<<30)
 #define BONESEL_ANY		(BONESEL_TIP|BONESEL_ROOT|BONESEL_BONE)
 
-#define BONESEL_NOSEL	0x80000000	/* Indicates a negative number */
+#define BONESEL_NOSEL	(1<<31)	/* Indicates a negative number */
 
 /* useful macros */
 #define EBONE_VISIBLE(arm, ebone) ((arm->layer & ebone->layer) && !(ebone->flag & BONE_HIDDEN_A))

Modified: trunk/blender/source/blender/editors/space_view3d/drawarmature.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawarmature.c	2010-09-15 12:18:50 UTC (rev 31943)
+++ trunk/blender/source/blender/editors/space_view3d/drawarmature.c	2010-09-15 13:07:36 UTC (rev 31944)
@@ -310,7 +310,7 @@
 
 	if(displist==0) {
 		displist= glGenLists(1);
-		glNewList(displist, GL_COMPILE_AND_EXECUTE);
+		glNewList(displist, GL_COMPILE);
 
 		glBegin(GL_QUADS);
 		n[0]= -1.0;
@@ -340,19 +340,17 @@
 
 		glEndList();
 	}
-	else glCallList(displist);
-	
+
+	glCallList(displist);
 }
 
 static void drawcube_size(float xsize, float ysize, float zsize)
 {
 	static GLuint displist=0;
 	
-	glScalef(xsize, ysize, zsize);
-	
 	if(displist == 0) {
 		displist= glGenLists(1);
-		glNewList(displist, GL_COMPILE_AND_EXECUTE);
+		glNewList(displist, GL_COMPILE);
 		
 		glBegin(GL_LINE_STRIP);
 		glVertex3fv(cube[0]); glVertex3fv(cube[1]);glVertex3fv(cube[2]); glVertex3fv(cube[3]);
@@ -368,7 +366,9 @@
 		
 		glEndList();
 	}
-	else glCallList(displist);
+
+	glScalef(xsize, ysize, zsize);
+	glCallList(displist);
 	
 }
 
@@ -381,7 +381,7 @@
 		GLUquadricObj	*qobj;
 		
 		displist= glGenLists(1);
-		glNewList(displist, GL_COMPILE_AND_EXECUTE);
+		glNewList(displist, GL_COMPILE);
 			
 		glPushMatrix();
 		
@@ -400,8 +400,8 @@
 		glPopMatrix();
 		glEndList();
 	}
-	else 
-		glCallList(displist);
+
+	glCallList(displist);
 }
 
 static void draw_bonevert_solid(void)
@@ -412,7 +412,7 @@
 		GLUquadricObj	*qobj;
 		
 		displist= glGenLists(1);
-		glNewList(displist, GL_COMPILE_AND_EXECUTE);
+		glNewList(displist, GL_COMPILE);
 		
 		qobj	= gluNewQuadric();
 		gluQuadricDrawStyle(qobj, GLU_FILL); 
@@ -423,8 +423,8 @@
 		
 		glEndList();
 	}
-	else 
-		glCallList(displist);
+
+	glCallList(displist);
 }
 
 static void draw_bone_octahedral()
@@ -435,7 +435,7 @@
 		float vec[6][3];	
 		
 		displist= glGenLists(1);
-		glNewList(displist, GL_COMPILE_AND_EXECUTE);
+		glNewList(displist, GL_COMPILE);
 		
 		vec[0][0]= vec[0][1]= vec[0][2]= 0.0f;
 		vec[5][0]= vec[5][2]= 0.0f; vec[5][1]= 1.0f;
@@ -467,8 +467,8 @@
 		
 		glEndList();
 	}
-	else 
-		glCallList(displist);
+
+	glCallList(displist);
 }	
 
 static void draw_bone_solid_octahedral(void)
@@ -479,7 +479,7 @@
 		float vec[6][3], nor[3];	
 		
 		displist= glGenLists(1);
-		glNewList(displist, GL_COMPILE_AND_EXECUTE);
+		glNewList(displist, GL_COMPILE);
 		
 		vec[0][0]= vec[0][1]= vec[0][2]= 0.0f;
 		vec[5][0]= vec[5][2]= 0.0f; vec[5][1]= 1.0f;
@@ -529,8 +529,8 @@
 		
 		glEndList();
 	}
-	else 
-		glCallList(displist);
+
+	glCallList(displist);
 }	
 
 /* *************** Armature drawing, bones ******************* */
@@ -1933,7 +1933,7 @@
 		
 		if (v3d->zbuf) glDisable(GL_DEPTH_TEST);
 
-		for (eBone=arm->edbo->first, index=0; eBone; eBone=eBone->next, index++) {
+		for (eBone=arm->edbo->first; eBone; eBone=eBone->next) {
 			if (eBone->layer & arm->layer) {
 				if ((eBone->flag & (BONE_HIDDEN_A|BONE_NO_DEFORM))==0) {
 					if (eBone->flag & (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL))
@@ -1949,7 +1949,6 @@
 	
 	/* if solid we draw it first */
 	if ((dt > OB_WIRE) && (arm->drawtype!=ARM_LINE)) {
-		index= 0;
 		for (eBone=arm->edbo->first, index=0; eBone; eBone=eBone->next, index++) {
 			if (eBone->layer & arm->layer) {
 				if ((eBone->flag & BONE_HIDDEN_A)==0) {
@@ -2043,6 +2042,7 @@
 	}
 	
 	/* restore */
+	if(index!=-1) glLoadName(-1);
 	if (arm->drawtype==ARM_LINE);
 	else if (dt>OB_WIRE) bglPolygonOffset(rv3d->dist, 0.0f);
 	
@@ -2054,7 +2054,7 @@
 			
 			if (v3d->zbuf) glDisable(GL_DEPTH_TEST);
 			
-			for (eBone=arm->edbo->first, index=0; eBone; eBone=eBone->next, index++) {
+			for (eBone=arm->edbo->first; eBone; eBone=eBone->next) {
 				if(eBone->layer & arm->layer) {
 					if ((eBone->flag & BONE_HIDDEN_A)==0) {
 						





More information about the Bf-blender-cvs mailing list