From c3a11a56711aa8d92225b1fb8efb21e3eeb5d148 Mon Sep 17 00:00:00 2001 From: Sebastian Parborg Date: Wed, 17 Apr 2019 12:30:00 +0200 Subject: [PATCH] Fix T63247: edbm_rip_invoke__edge rips unselected verts on mesh borders Ripping edges would in some cases rip verts on unselected edges. This is now fixed so that we only rip verts from the actually selected edges. Reviewed By: Brecht Differential Revision: http://developer.blender.org/D4646 --- source/blender/bmesh/tools/bmesh_edgesplit.c | 11 ++++++----- source/blender/editors/mesh/editmesh_rip.c | 3 +++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/source/blender/bmesh/tools/bmesh_edgesplit.c b/source/blender/bmesh/tools/bmesh_edgesplit.c index 332672d7c3c..388e7f41aba 100644 --- a/source/blender/bmesh/tools/bmesh_edgesplit.c +++ b/source/blender/bmesh/tools/bmesh_edgesplit.c @@ -78,11 +78,12 @@ void BM_mesh_edgesplit(BMesh *bm, } } } - - BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) { - if (BM_elem_flag_test(e, BM_ELEM_TAG)) { - BM_elem_flag_enable(e->v1, BM_ELEM_TAG); - BM_elem_flag_enable(e->v2, BM_ELEM_TAG); + else { + BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) { + if (BM_elem_flag_test(e, BM_ELEM_TAG)) { + BM_elem_flag_enable(e->v1, BM_ELEM_TAG); + BM_elem_flag_enable(e->v2, BM_ELEM_TAG); + } } } diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index a341b51ebdb..b1a62ffde3d 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -904,6 +904,9 @@ static int edbm_rip_invoke__edge(bContext *C, const wmEvent *event, Object *obed if (BM_elem_flag_test(e, BM_ELEM_SELECT)) { e_best = e; i++; + /* Tag the edge verts so we know which verts to rip */ + BM_elem_flag_enable(e->v1, BM_ELEM_TAG); + BM_elem_flag_enable(e->v2, BM_ELEM_TAG); } totedge_manifold++; }