diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-30 04:23:22 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-30 04:23:22 +0400 |
commit | bf21f02ad0ebfd81aa2d20a3886c7ba5e751e125 (patch) | |
tree | cf67d3c086159f3f0e18403fc189a281e583c8fd /source/blender/bmesh/intern/bmesh_mesh_conv.c | |
parent | 9e497291ee7164a4aa8c4f3e24ac9d2c52fc60c5 (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.c | 16 |
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; |