[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29452] trunk/blender/source/blender/ editors/mesh/editmesh.c: separate loose parts was hanging on hidden verts

Campbell Barton ideasman42 at gmail.com
Mon Jun 14 18:58:31 CEST 2010


Revision: 29452
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29452
Author:   campbellbarton
Date:     2010-06-14 18:58:31 +0200 (Mon, 14 Jun 2010)

Log Message:
-----------
separate loose parts was hanging on hidden verts

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/editmesh.c

Modified: trunk/blender/source/blender/editors/mesh/editmesh.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh.c	2010-06-14 15:39:50 UTC (rev 29451)
+++ trunk/blender/source/blender/editors/mesh/editmesh.c	2010-06-14 16:58:31 UTC (rev 29452)
@@ -1480,10 +1480,18 @@
 	}
 	
 	EM_clear_flag_all(em, SELECT);
-	
-	while(doit && em->verts.first) {
+
+	while(doit) {
 		/* Select a random vert to start with */
-		EditVert *eve= em->verts.first;
+		EditVert *eve;
+		int tot;
+
+		/* check if all verts that are visible have been done */
+		for(eve=em->verts.first; eve; eve= eve->next)
+			if(!eve->h) break;
+		if(eve==NULL) break; /* only hidden verts left, quit early */
+
+		/* first non hidden vert */
 		eve->f |= SELECT;
 		
 		selectconnected_mesh_all(em);
@@ -1493,8 +1501,14 @@
 			if((eve->f & SELECT)==0) break;
 		if(eve==NULL) break;
 
+		tot= BLI_countlist(&em->verts);
+
 		/* and now separate */
 		doit= mesh_separate_selected(scene, editbase);
+
+		/* with hidden verts this can happen */
+		if(tot == BLI_countlist(&em->verts))
+			break;
 	}
 
 	BKE_mesh_end_editmesh(me, em);





More information about the Bf-blender-cvs mailing list