[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45273] trunk/blender/source/blender/bmesh /intern/bmesh_mesh_conv.c: fix [#30718] Selecting vertices, edges, faces and undoing - results in wrong header status info

Campbell Barton ideasman42 at gmail.com
Fri Mar 30 02:23:39 CEST 2012


Revision: 45273
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45273
Author:   campbellbarton
Date:     2012-03-30 00:23:22 +0000 (Fri, 30 Mar 2012)
Log Message:
-----------
fix [#30718] Selecting vertices, edges, faces and undoing - results in wrong header status info

converting mesh to bmesh resulted in incorrect stats.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c	2012-03-29 23:33:50 UTC (rev 45272)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c	2012-03-30 00:23:22 UTC (rev 45273)
@@ -142,10 +142,10 @@
 		vt[i] = v;
 
 		/* transfer flag */
-		v->head.hflag = BM_vert_flag_from_mflag(mvert->flag);
+		v->head.hflag = BM_vert_flag_from_mflag(mvert->flag & ~SELECT);
 
 		/* this is necessary for selection counts to work properly */
-		if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
+		if (mvert->flag & SELECT) {
 			BM_vert_select_set(bm, v, TRUE);
 		}
 
@@ -190,10 +190,12 @@
 		et[i] = e;
 
 		/* transfer flags */
-		e->head.hflag = BM_edge_flag_from_mflag(medge->flag);
+		e->head.hflag = BM_edge_flag_from_mflag(medge->flag & ~SELECT);
 
 		/* this is necessary for selection counts to work properly */
-		if (BM_elem_flag_test(e, BM_ELEM_SELECT)) BM_elem_select_set(bm, e, TRUE);
+		if (medge->flag & SELECT) {
+			BM_elem_select_set(bm, e, TRUE);
+		}
 
 		/* Copy Custom Data */
 		CustomData_to_bmesh_block(&me->edata, &bm->edata, i, &e->head.data);
@@ -254,10 +256,12 @@
 		BM_elem_index_set(f, bm->totface - 1); /* set_ok */
 
 		/* transfer flag */
-		f->head.hflag = BM_face_flag_from_mflag(mpoly->flag);
+		f->head.hflag = BM_face_flag_from_mflag(mpoly->flag & ~SELECT);
 
 		/* this is necessary for selection counts to work properly */
-		if (BM_elem_flag_test(f, BM_ELEM_SELECT)) BM_elem_select_set(bm, f, TRUE);
+		if (mpoly->flag & SELECT) {
+			BM_elem_select_set(bm, f, TRUE);
+		}
 
 		f->mat_nr = mpoly->mat_nr;
 		if (i == me->act_face) bm->act_face = f;




More information about the Bf-blender-cvs mailing list