Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-03-30 04:23:22 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-30 04:23:22 +0400
commitbf21f02ad0ebfd81aa2d20a3886c7ba5e751e125 (patch)
treecf67d3c086159f3f0e18403fc189a281e583c8fd /source/blender/bmesh/intern/bmesh_mesh_conv.c
parent9e497291ee7164a4aa8c4f3e24ac9d2c52fc60c5 (diff)
fix [#30718] Selecting vertices, edges, faces and undoing - results in wrong header status info
converting mesh to bmesh resulted in incorrect stats.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_mesh_conv.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_mesh_conv.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mesh_conv.c b/source/blender/bmesh/intern/bmesh_mesh_conv.c
index 1e478b9b4a8..c5cc0a01b9c 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_conv.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_conv.c
@@ -142,10 +142,10 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me, int set_key, int act_key_nr)
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 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me, int set_key, int act_key_nr)
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 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me, int set_key, int act_key_nr)
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;