[Bf-committers] Rotate Edge in Both Directions

Johnny Matthews johnny.matthews at gmail.com
Tue Feb 15 21:13:23 CET 2005


Here is a patch to be able to rotate an edge either Clockwise or 
CounterClockwise.  I can A) go ahead and commit this for testing or B) 
let people try out the patch. The mods are easily removed if there are 
major issues. I have done a bunch of testing and the crashes I was 
getting have been resolved. So I need others to hit it hard and find 
other bugs in it. So Ton, should I do A or B?

Johnny
-------------- next part --------------
Index: source/blender/include/BIF_editmesh.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/include/BIF_editmesh.h,v
retrieving revision 1.36
diff -u -r1.36 BIF_editmesh.h
--- source/blender/include/BIF_editmesh.h	24 Nov 2004 16:29:10 -0000	1.36
+++ source/blender/include/BIF_editmesh.h	14 Feb 2005 20:33:59 -0000
@@ -167,7 +168,7 @@
 extern void edge_flip(void);
 extern void fill_mesh(void);
 extern void bevel_menu();
-void edge_rotate_selected(void);
+void edge_rotate_selected(int dir);
  
 #endif
 
Index: source/blender/src/editmesh_mods.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/editmesh_mods.c,v
retrieving revision 1.42
diff -u -r1.42 editmesh_mods.c
--- source/blender/src/editmesh_mods.c	8 Jan 2005 13:50:44 -0000	1.42
+++ source/blender/src/editmesh_mods.c	15 Feb 2005 19:07:42 -0000
@@ -1704,7 +1704,7 @@
 void Edge_Menu() {
 	short ret;
 
-	ret= pupmenu("Edge Specials%t|Mark Seam %x1|Clear Seam %x2|Rotate Edge %x3");
+	ret= pupmenu("Edge Specials%t|Mark Seam %x1|Clear Seam %x2|Rotate Edge CW%x3|Rotate Edge CCW%x4");
 
 	switch(ret)
 	{
@@ -1715,7 +1715,10 @@
 		editmesh_mark_seam(1);
 		break;
 	case 3:
-		edge_rotate_selected();
+		edge_rotate_selected(2);
+		break;
+	case 4:
+		edge_rotate_selected(1);
 		break;
 	}
 }
Index: source/blender/src/editmesh_tools.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/editmesh_tools.c,v
retrieving revision 1.29
diff -u -r1.29 editmesh_tools.c
--- source/blender/src/editmesh_tools.c	14 Feb 2005 20:14:10 -0000	1.29
+++ source/blender/src/editmesh_tools.c	15 Feb 2005 20:04:50 -0000
@@ -2434,7 +2434,7 @@
 	
 }
 
-static void edge_rotate(EditEdge *eed)
+static void edge_rotate(EditEdge *eed,int dir)
 {
 	EditMesh *em = G.editMesh;
 	EditFace *face[2], *efa, *newFace[2];
@@ -2564,95 +2564,176 @@
 							
 	/* create the 2 new faces */   								
 	if(fac1 == 3 && fac2 == 3){
-		newFace[0] = addfacelist(faces[0][(p1+1)%3],faces[0][(p1+2)%3],faces[1][(p3+1)%3],NULL,NULL,NULL);
-		newFace[1] = addfacelist(faces[1][(p3+1)%3],faces[1][(p3+2)%3],faces[0][(p1+1)%3],NULL,NULL,NULL);
-	
-		newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%3];
-		newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%3];
-		newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1)%3];
-		newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1)%3];
-		newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2)%3];
-		newFace[1]->tf.col[2] =	face[0]->tf.col[(p1+1)%3];
-	
-		UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1)%3]);
-		UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2)%3]);	
-		UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1)%3]);
-		UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1)%3]);
-		UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2)%3]);
-		UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1)%3]);
+		/*No need of reverse setup*/
+		newFace[0] = addfacelist(faces[0][(p1+1 )%3],faces[0][(p1+2 )%3],faces[1][(p3+1 )%3],NULL,NULL,NULL);
+		newFace[1] = addfacelist(faces[1][(p3+1 )%3],faces[1][(p3+2 )%3],faces[0][(p1+1 )%3],NULL,NULL,NULL);
+	
+		newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1 )%3];
+		newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2 )%3];
+		newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1 )%3];
+		newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%3];
+		newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%3];
+		newFace[1]->tf.col[2] =	face[0]->tf.col[(p1+1 )%3];
+	
+		UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1 )%3]);
+		UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2 )%3]);	
+		UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1 )%3]);
+		UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%3]);
+		UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%3]);
+		UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1 )%3]);
 	}
 	else if(fac1 == 4 && fac2 == 3){
-		newFace[0] = addfacelist(faces[0][(p1+1)%4],faces[0][(p1+2)%4],faces[0][(p1+3)%4],faces[1][(p3+1)%3],NULL,NULL);
-		newFace[1] = addfacelist(faces[1][(p3+1)%3],faces[1][(p3+2)%3],faces[0][(p1+1)%4],NULL,NULL,NULL);
-
-		newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%4];
-		newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%4];
-		newFace[0]->tf.col[2] = face[0]->tf.col[(p1+3)%4];
-		newFace[0]->tf.col[3] = face[1]->tf.col[(p3+1)%3];
-		newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1)%3];
-		newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2)%3];
-		newFace[1]->tf.col[2] =	face[0]->tf.col[(p1+1)%4];
-
-		UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1)%4]);
-		UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2)%4]);	
-		UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1+3)%4]);		
-		UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+1)%3]);
-		UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1)%3]);
-		UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2)%3]);
-		UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1)%4]);	
+		if(dir == 1){
+			newFace[0] = addfacelist(faces[0][(p1+1 )%4],faces[0][(p1+2 )%4],faces[0][(p1+3 )%4],faces[1][(p3+1 )%3],NULL,NULL);
+			newFace[1] = addfacelist(faces[1][(p3+1 )%3],faces[1][(p3+2 )%3],faces[0][(p1+1 )%4],NULL,NULL,NULL);
+	
+			newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1 )%4];
+			newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2 )%4];
+			newFace[0]->tf.col[2] = face[0]->tf.col[(p1+3 )%4];
+			newFace[0]->tf.col[3] = face[1]->tf.col[(p3+1 )%3];
+			newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%3];
+			newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%3];
+			newFace[1]->tf.col[2] =	face[0]->tf.col[(p1+1 )%4];
+	
+			UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1 )%4]);
+			UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2 )%4]);	
+			UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1+3 )%4]);		
+			UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+1 )%3]);
+			UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%3]);
+			UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%3]);
+			UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1 )%4]);	
+		} else if (dir == 2){
+			newFace[0] = addfacelist(faces[0][(p1+2 )%4],faces[1][(p3+1)%3],faces[0][(p1)%4],faces[0][(p1+1 )%4],NULL,NULL);
+			newFace[1] = addfacelist(faces[0][(p1+2 )%4],faces[1][(p3)%3],faces[1][(p3+1 )%3],NULL,NULL,NULL);
+
+			newFace[0]->tf.col[0] = face[0]->tf.col[(p1+2)%4];
+			newFace[0]->tf.col[1] = face[1]->tf.col[(p3+1)%3];
+			newFace[0]->tf.col[2] = face[0]->tf.col[(p1  )%4];
+			newFace[0]->tf.col[3] = face[0]->tf.col[(p1+1)%4];
+			newFace[1]->tf.col[0] = face[0]->tf.col[(p1+2)%4];
+			newFace[1]->tf.col[1] = face[1]->tf.col[(p3  )%3];
+			newFace[1]->tf.col[2] =	face[1]->tf.col[(p3+1)%3];
+	
+			UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+2)%4]);
+			UVCOPY(newFace[0]->tf.uv[1],face[1]->tf.uv[(p3+1)%3]);	
+			UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1  )%4]);		
+			UVCOPY(newFace[0]->tf.uv[3],face[0]->tf.uv[(p1+1)%4]);
+			UVCOPY(newFace[1]->tf.uv[0],face[0]->tf.uv[(p1+2)%4]);
+			UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3  )%3]);
+			UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+1)%3]);	
+			
+			faces[0][(p1+2)%fac1]->f |= SELECT;
+			faces[1][(p3+1)%fac2]->f |= SELECT;		
+		}
 	}
 
 	else if(fac1 == 3 && fac2 == 4){
-		newFace[0] = addfacelist(faces[0][(p1+1)%3],faces[0][(p1+2)%3],faces[1][(p3+1)%4],NULL,NULL,NULL);
-		newFace[1] = addfacelist(faces[1][(p3+1)%4],faces[1][(p3+2)%4],faces[1][(p3+3)%4],faces[0][(p1+1)%3],NULL,NULL);
-
-		newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%3];
-		newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%3];
-		newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1)%4];
-		newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1)%4];
-		newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2)%4];
-		newFace[1]->tf.col[2] = face[1]->tf.col[(p3+3)%4];		
-		newFace[1]->tf.col[3] =	face[0]->tf.col[(p1+1)%3];
-
-		UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1)%3]);
-		UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2)%3]);	
-		UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1)%4]);
-		UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1)%4]);
-		UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2)%4]);
-		UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+3)%4]);
-		UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+1)%3]);
+		if(dir == 1){
+			newFace[0] = addfacelist(faces[0][(p1+1 )%3],faces[0][(p1+2 )%3],faces[1][(p3+1 )%4],NULL,NULL,NULL);
+			newFace[1] = addfacelist(faces[1][(p3+1 )%4],faces[1][(p3+2 )%4],faces[1][(p3+3 )%4],faces[0][(p1+1 )%3],NULL,NULL);
+	
+			newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1 )%3];
+			newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2 )%3];
+			newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1 )%4];
+			newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%4];
+			newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%4];
+			newFace[1]->tf.col[2] = face[1]->tf.col[(p3+3 )%4];		
+			newFace[1]->tf.col[3] =	face[0]->tf.col[(p1+1 )%3];
+	
+			UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1 )%3]);
+			UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2 )%3]);	
+			UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1 )%4]);
+			UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%4]);
+			UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%4]);
+			UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+3 )%4]);
+			UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+1 )%3]);
+		} else if (dir == 2){
+			newFace[0] = addfacelist(faces[0][(p1)%3],faces[0][(p1+1 )%3],faces[1][(p3+2 )%4],NULL,NULL,NULL);
+			newFace[1] = addfacelist(faces[1][(p3+1 )%4],faces[1][(p3+2 )%4],faces[0][(p1+1 )%3],faces[0][(p1+2 )%3],NULL,NULL);
+	
+			newFace[0]->tf.col[0] = face[0]->tf.col[(p1 )%3];
+			newFace[0]->tf.col[1] = face[0]->tf.col[(p1+1 )%3];
+			newFace[0]->tf.col[2] = face[1]->tf.col[(p3+2 )%4];
+			newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%4];
+			newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%4];
+			newFace[1]->tf.col[2] = face[0]->tf.col[(p1+1 )%3];		
+			newFace[1]->tf.col[3] =	face[0]->tf.col[(p1+2 )%3];
+	
+			UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1 )%3]);
+			UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+1 )%3]);	
+			UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+2 )%4]);
+			UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%4]);
+			UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%4]);
+			UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1 )%3]);
+			UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+2 )%3]);	
+			
+			faces[0][(p1+1)%fac1]->f |= SELECT;
+			faces[1][(p3+2)%fac2]->f |= SELECT;	
+		}
 	
 	}
 	
 	else if(fac1 == 4 && fac2 == 4){
-		newFace[0] = addfacelist(faces[0][(p1+1)%4],faces[0][(p1+2)%4],faces[0][(p1+3)%4],faces[1][(p3+1)%4],NULL,NULL);
-		newFace[1] = addfacelist(faces[1][(p3+1)%4],faces[1][(p3+2)%4],faces[1][(p3+3)%4],faces[0][(p1+1)%4],NULL,NULL);
+		if(dir == 1){
+			newFace[0] = addfacelist(faces[0][(p1+1 )%4],faces[0][(p1+2 )%4],faces[0][(p1+3 )%4],faces[1][(p3+1 )%4],NULL,NULL);
+			newFace[1] = addfacelist(faces[1][(p3+1 )%4],faces[1][(p3+2 )%4],faces[1][(p3+3 )%4],faces[0][(p1+1 )%4],NULL,NULL);
+	
+			newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1 )%4];
+			newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2 )%4];
+			newFace[0]->tf.col[2] = face[0]->tf.col[(p1+3 )%4];
+			newFace[0]->tf.col[3] = face[1]->tf.col[(p3+1 )%4];
+			newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%4];
+			newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%4];
+			newFace[1]->tf.col[2] = face[1]->tf.col[(p3+3 )%4];		
+			newFace[1]->tf.col[3] =	face[0]->tf.col[(p1+1 )%4];
+									
+			UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1 )%4]);
+			UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2 )%4]);	
+			UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1+3 )%4]);		
+			UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+1 )%4]);
+			UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%4]);
+			UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%4]);
+			UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+3 )%4]);
+			UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+1 )%4]);	
+		} else if (dir == 2){
+			newFace[0] = addfacelist(faces[0][(p1+2 )%4],faces[0][(p1+3 )%4],faces[1][(p3+1 )%4],faces[1][(p3+2 )%4],NULL,NULL);
+			newFace[1] = addfacelist(faces[1][(p3+2 )%4],faces[1][(p3+3 )%4],faces[0][(p1+1 )%4],faces[0][(p1+2 )%4],NULL,NULL);
+	
+			newFace[0]->tf.col[0] = face[0]->tf.col[(p1+2 )%4];
+			newFace[0]->tf.col[1] = face[0]->tf.col[(p1+3 )%4];
+			newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1 )%4];
+			newFace[0]->tf.col[3] = face[1]->tf.col[(p3+2 )%4];
+			newFace[1]->tf.col[0] = face[1]->tf.col[(p3+2 )%4];
+			newFace[1]->tf.col[1] = face[1]->tf.col[(p3+3 )%4];
+			newFace[1]->tf.col[2] = face[0]->tf.col[(p1+1 )%4];		
+			newFace[1]->tf.col[3] =	face[0]->tf.col[(p1+2 )%4];
+									
+			UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+2 )%4]);
+			UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+3 )%4]);	
+			UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1 )%4]);		
+			UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+2 )%4]);
+			UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+2 )%4]);
+			UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+3 )%4]);
+			UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1 )%4]);
+			UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+2 )%4]);		
+			
+			faces[0][(p1+2)%fac1]->f |= SELECT;
+			faces[1][(p3+2)%fac2]->f |= SELECT;	
+		}
+		
 
-		newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%4];
-		newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%4];
-		newFace[0]->tf.col[2] = face[0]->tf.col[(p1+3)%4];
-		newFace[0]->tf.col[3] = face[1]->tf.col[(p3+1)%4];
-		newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1)%4];
-		newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2)%4];
-		newFace[1]->tf.col[2] = face[1]->tf.col[(p3+3)%4];		
-		newFace[1]->tf.col[3] =	face[0]->tf.col[(p1+1)%4];
-								
-		UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1)%4]);
-		UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2)%4]);	
-		UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1+3)%4]);		
-		UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+1)%4]);
-		UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1)%4]);
-		UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2)%4]);
-		UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+3)%4]);
-		UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+1)%4]);	
 	}		
 	else{
 		/*This should never happen*/
 		return;
 	}
+
+	if(dir == 1){
+		faces[0][(p1+1)%fac1]->f |= SELECT;
+		faces[1][(p3+1)%fac2]->f |= SELECT;
+	}
 	
 	/* copy flags and material */
-
 	newFace[0]->mat_nr     = face[0]->mat_nr;
 	newFace[0]->tf.flag    = face[0]->tf.flag;
 	newFace[0]->tf.transp  = face[0]->tf.transp;
@@ -2670,22 +2751,21 @@
 	newFace[1]->tf.tpage   = face[1]->tf.tpage;
 
 	/* redo the vertex selection */
-	faces[0][(p1+1)%fac1]->f |= SELECT;
-	faces[1][(p3+1)%fac2]->f |= SELECT;	
+
 	
+
 	/* get rid of the old edge and faces*/
 	remedge(eed);
 	free_editedge(eed);	
 	BLI_remlink(&em->faces, face[0]);
 	free_editface(face[0]);	
 	BLI_remlink(&em->faces, face[1]);
-	free_editface(face[1]);	
-	
+	free_editface(face[1]);		
 	return;																																																														
 }						
 
 /* only accepts 1 selected edge, or 2 selected faces */
-void edge_rotate_selected()
+void edge_rotate_selected(int dir)
 {
 	EditEdge *eed;
 	EditFace *efa;
@@ -2715,7 +2795,7 @@
 		if(edgeCount==1) {
 			for(eed= G.editMesh->edges.first; eed; eed= eed->next) {
 				if(eed->f1==2) {
-					edge_rotate(eed);
+					edge_rotate(eed,dir);
 					break;
 				}
 			}
@@ -2726,7 +2806,7 @@
 		for(eed= G.editMesh->edges.first; eed; eed= eed->next) {
 			if(eed->f & SELECT) {
 				EM_select_edge(eed, 0);
-				edge_rotate(eed);
+				edge_rotate(eed,dir);
 				break;
 			}
 		}
Index: source/blender/src/header_view3d.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/header_view3d.c,v
retrieving revision 1.87
diff -u -r1.87 header_view3d.c
--- source/blender/src/header_view3d.c	12 Feb 2005 12:06:30 -0000	1.87
+++ source/blender/src/header_view3d.c	15 Feb 2005 19:06:45 -0000
@@ -1922,7 +1922,10 @@
 		transform('e');
 		break;
 	case 10: /* Rotate Edge */
-		edge_rotate_selected();
+		edge_rotate_selected(2);
+		break;
+	case 11: /* Rotate Edge */
+		edge_rotate_selected(1);
 		break;
 	}
 	allqueue(REDRAWVIEW3D, 0);
@@ -1963,7 +1966,8 @@
 	}
 	uiDefBut(block, SEPR, 0, "",				0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
 
-	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate Edge|Ctrl E",			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate Edge CW|Ctrl E",			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate Edge CCW|Ctrl E",			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");	
 	
 	uiBlockSetDirection(block, UI_RIGHT);
 	uiTextBoundsBlock(block, 60);


More information about the Bf-committers mailing list