[Bf-blender-cvs] [c3a11a56711] master: Fix T63247: edbm_rip_invoke__edge rips unselected verts on mesh borders

Sebastian Parborg noreply at git.blender.org
Wed Apr 17 12:34:39 CEST 2019


Commit: c3a11a56711aa8d92225b1fb8efb21e3eeb5d148
Author: Sebastian Parborg
Date:   Wed Apr 17 12:30:00 2019 +0200
Branches: master
https://developer.blender.org/rBc3a11a56711aa8d92225b1fb8efb21e3eeb5d148

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

===================================================================

M	source/blender/bmesh/tools/bmesh_edgesplit.c
M	source/blender/editors/mesh/editmesh_rip.c

===================================================================

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++;
       }



More information about the Bf-blender-cvs mailing list