Revision: 53335
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53335
Author:   campbellbarton
Date:     2012-12-27 01:02:32 +0000 (Thu, 27 Dec 2012)
Log Message:
-----------
fix [#33651] Spin tool destroys unselected loose vertex

bmesh.ops.extrude_face_region() didn't check for isolated verts (not connected 
to geometry), and removed them, happened for Ctrl+LMB extrude too.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
    trunk/blender/source/blender/bmesh/operators/bmo_extrude.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_dupe.c     2012-12-26 
20:59:35 UTC (rev 53334)
+++ trunk/blender/source/blender/bmesh/operators/bmo_dupe.c     2012-12-27 
01:02:32 UTC (rev 53335)
@@ -483,7 +483,7 @@
 {
        BMOperator dupop, extop;
        float cent[3], dvec[3];
-       float axis[3] = {0.0f, 0.0f, 1.0f};
+       float axis[3];
        float rmat[3][3];
        float phi;
        int steps, do_dupli, a, usedvec;

Modified: trunk/blender/source/blender/bmesh/operators/bmo_extrude.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_extrude.c  2012-12-26 
20:59:35 UTC (rev 53334)
+++ trunk/blender/source/blender/bmesh/operators/bmo_extrude.c  2012-12-27 
01:02:32 UTC (rev 53335)
@@ -315,27 +315,29 @@
 
        /* calculate verts to delete */
        BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
-               found = FALSE;
+               if (v->e) {  /* only deal with verts attached to geometry 
[#33651] */
+                       found = FALSE;
 
-               BM_ITER_ELEM (e, &viter, v, BM_EDGES_OF_VERT) {
-                       if (!BMO_elem_flag_test(bm, e, EXT_INPUT) || 
!BMO_elem_flag_test(bm, e, EXT_DEL)) {
-                               found = TRUE;
-                               break;
-                       }
-               }
-
-               /* avoid an extra loop */
-               if (found == TRUE) {
-                       BM_ITER_ELEM (f, &viter, v, BM_FACES_OF_VERT) {
-                               if (!BMO_elem_flag_test(bm, f, EXT_INPUT)) {
+                       BM_ITER_ELEM (e, &viter, v, BM_EDGES_OF_VERT) {
+                               if (!BMO_elem_flag_test(bm, e, EXT_INPUT) || 
!BMO_elem_flag_test(bm, e, EXT_DEL)) {
                                        found = TRUE;
                                        break;
                                }
                        }
-               }
 
-               if (found == FALSE) {
-                       BMO_elem_flag_enable(bm, v, EXT_DEL);
+                       /* avoid an extra loop */
+                       if (found == TRUE) {
+                               BM_ITER_ELEM (f, &viter, v, BM_FACES_OF_VERT) {
+                                       if (!BMO_elem_flag_test(bm, f, 
EXT_INPUT)) {
+                                               found = TRUE;
+                                               break;
+                                       }
+                               }
+                       }
+
+                       if (found == FALSE) {
+                               BMO_elem_flag_enable(bm, v, EXT_DEL);
+                       }
                }
        }
        

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to