From f5cf23888490c85cb7a23f05259daff6e369cbac Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 28 Oct 2011 08:09:34 +0000 Subject: [PATCH] the BMesh select mode wasnt being set on entering editmode, this made snap to selection fail. --- source/blender/bmesh/bmesh_class.h | 7 +++++-- source/blender/editors/mesh/bmeshutils.c | 2 +- source/blender/editors/space_view3d/view3d_snap.c | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/source/blender/bmesh/bmesh_class.h b/source/blender/bmesh/bmesh_class.h index 45c26861f02..af3c66cff2d 100644 --- a/source/blender/bmesh/bmesh_class.h +++ b/source/blender/bmesh/bmesh_class.h @@ -135,8 +135,11 @@ typedef struct BMesh { struct BLI_mempool *looplistpool; - /*should be copy of scene select mode*/ - int selectmode; + /* should be copy of scene select mode */ + /* stored in BMEditMesh too, this is a bit confusing, + * make sure the're in sync! + * Only use when the edit mesh cant be accessed - campbell */ + short selectmode; /*ID of the shape key this bmesh came from*/ int shapenr; diff --git a/source/blender/editors/mesh/bmeshutils.c b/source/blender/editors/mesh/bmeshutils.c index fd13191a113..18e5688f46d 100644 --- a/source/blender/editors/mesh/bmeshutils.c +++ b/source/blender/editors/mesh/bmeshutils.c @@ -281,7 +281,7 @@ void EDBM_MakeEditBMesh(ToolSettings *ts, Scene *UNUSED(scene), Object *ob) } me->edit_btmesh = BMEdit_Create(bm); - me->edit_btmesh->selectmode = ts->selectmode; + me->edit_btmesh->selectmode= me->edit_btmesh->bm->selectmode= ts->selectmode; me->edit_btmesh->me = me; me->edit_btmesh->ob = ob; } diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index 654cc6b3080..9f07b18c212 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -235,7 +235,7 @@ static void make_trans_verts(Object *obedit, float *min, float *max, int mode) // transform now requires awareness for select mode, so we tag the f1 flags in verts tottrans= 0; - if(em->bm->selectmode & SCE_SELECT_VERTEX) { + if(em->selectmode & SCE_SELECT_VERTEX) { BM_ITER(eve, &iter, bm, BM_VERTS_OF_MESH, NULL) { if(!BM_TestHFlag(eve, BM_HIDDEN) && BM_TestHFlag(eve, BM_SELECT)) { BM_SetIndex(eve, 1); @@ -244,7 +244,7 @@ static void make_trans_verts(Object *obedit, float *min, float *max, int mode) else BM_SetIndex(eve, 0); } } - else if(em->bm->selectmode & SCE_SELECT_EDGE) { + else if(em->selectmode & SCE_SELECT_EDGE) { BMEdge *eed; BM_ITER(eve, &iter, bm, BM_VERTS_OF_MESH, NULL)