[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50734] trunk/blender/source/blender/ editors/mesh/editmesh_tools.c: fix [#32575] Seperate more than one object from a mesh generates additional edges
Campbell Barton
ideasman42 at gmail.com
Wed Sep 19 02:09:15 CEST 2012
Revision: 50734
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50734
Author: campbellbarton
Date: 2012-09-19 00:09:14 +0000 (Wed, 19 Sep 2012)
Log Message:
-----------
fix [#32575] Seperate more than one object from a mesh generates additional edges
Modified Paths:
--------------
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2012-09-18 19:20:26 UTC (rev 50733)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2012-09-19 00:09:14 UTC (rev 50734)
@@ -2858,9 +2858,6 @@
static int mesh_separate_tagged(Main *bmain, Scene *scene, Base *base_old, BMesh *bm_old)
{
Base *base_new;
- BMIter iter;
- BMVert *v;
- BMEdge *e;
Object *obedit = base_old->object;
BMesh *bm_new;
@@ -2886,16 +2883,11 @@
BMO_op_callf(bm_old, (BMO_FLAG_DEFAULTS & ~BMO_FLAG_RESPECT_HIDE),
"delete geom=%hvef context=%i", BM_ELEM_TAG, DEL_FACES);
- /* deselect loose data - this used to get deleted */
- BM_ITER_MESH (e, &iter, bm_old, BM_EDGES_OF_MESH) {
- BM_edge_select_set(bm_old, e, FALSE);
- }
+ /* deselect loose data - this used to get deleted,
+ * we could de-select edges and verts only, but this turns out to be less complicated
+ * since de-selecting all skips selection flushing logic */
+ BM_mesh_elem_hflag_disable_all(bm_old, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, FALSE);
- /* clean up any loose verts */
- BM_ITER_MESH (v, &iter, bm_old, BM_VERTS_OF_MESH) {
- BM_vert_select_set(bm_old, v, FALSE);
- }
-
BM_mesh_normals_update(bm_new, FALSE);
BM_mesh_bm_to_me(bm_new, base_new->object->data, FALSE);
@@ -2908,7 +2900,10 @@
static int mesh_separate_selected(Main *bmain, Scene *scene, Base *base_old, BMesh *bm_old)
{
- /* tag -> select */
+ /* we may have tags from previous operators */
+ BM_mesh_elem_hflag_disable_all(bm_old, BM_FACE | BM_EDGE | BM_VERT, BM_ELEM_TAG, FALSE);
+
+ /* sel -> tag */
BM_mesh_elem_hflag_enable_test(bm_old, BM_FACE | BM_EDGE | BM_VERT, BM_ELEM_TAG, TRUE, BM_ELEM_SELECT);
return mesh_separate_tagged(bmain, scene, base_old, bm_old);
More information about the Bf-blender-cvs
mailing list