[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60678] trunk/blender/source/blender/ editors/mesh/editmesh_select.c: fix for select linked walking over the same faces multiple times.

Campbell Barton ideasman42 at gmail.com
Fri Oct 11 01:18:38 CEST 2013


Revision: 60678
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60678
Author:   campbellbarton
Date:     2013-10-10 23:18:37 +0000 (Thu, 10 Oct 2013)
Log Message:
-----------
fix for select linked walking over the same faces multiple times. (caused gset assertion).

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

Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c	2013-10-10 22:30:16 UTC (rev 60677)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c	2013-10-10 23:18:37 UTC (rev 60678)
@@ -1856,7 +1856,6 @@
 	BMEditMesh *em = BKE_editmesh_from_object(obedit);
 	BMesh *bm = em->bm;
 	BMIter iter;
-	BMVert *v;
 	BMEdge *e;
 	BMWalker walker;
 
@@ -1870,8 +1869,7 @@
 		BMFace *efa;
 
 		BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-			BM_elem_flag_set(efa, BM_ELEM_TAG, (BM_elem_flag_test(efa, BM_ELEM_SELECT) &&
-			                                    !BM_elem_flag_test(efa, BM_ELEM_HIDDEN)));
+			BM_elem_flag_set(efa, BM_ELEM_TAG, BM_elem_flag_test(efa, BM_ELEM_SELECT));
 		}
 
 		if (limit) {
@@ -1891,6 +1889,7 @@
 			if (BM_elem_flag_test(efa, BM_ELEM_TAG)) {
 				for (efa = BMW_begin(&walker, efa); efa; efa = BMW_step(&walker)) {
 					BM_face_select_set(bm, efa, true);
+					BM_elem_flag_disable(efa, BM_ELEM_TAG);
 				}
 			}
 		}
@@ -1901,13 +1900,10 @@
 		}
 	}
 	else {
+		BMVert *v;
+
 		BM_ITER_MESH (v, &iter, em->bm, BM_VERTS_OF_MESH) {
-			if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
-				BM_elem_flag_enable(v, BM_ELEM_TAG);
-			}
-			else {
-				BM_elem_flag_disable(v, BM_ELEM_TAG);
-			}
+			BM_elem_flag_set(v, BM_ELEM_TAG, BM_elem_flag_test(v, BM_ELEM_SELECT));
 		}
 
 		BMW_init(&walker, em->bm, BMW_SHELL,
@@ -1919,6 +1915,7 @@
 			if (BM_elem_flag_test(v, BM_ELEM_TAG)) {
 				for (e = BMW_begin(&walker, v); e; e = BMW_step(&walker)) {
 					BM_edge_select_set(em->bm, e, true);
+					BM_elem_flag_disable(e, BM_ELEM_TAG);
 				}
 			}
 		}




More information about the Bf-blender-cvs mailing list