[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55325] trunk/blender/source/blender: object converting curve/ mball to a mesh would give invalid selection state ( edges selected but nothing else).

Campbell Barton ideasman42 at gmail.com
Sat Mar 16 02:19:04 CET 2013


Revision: 55325
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55325
Author:   campbellbarton
Date:     2013-03-16 01:19:03 +0000 (Sat, 16 Mar 2013)
Log Message:
-----------
object converting curve/mball to a mesh would give invalid selection state (edges selected but nothing else).
add arg to BKE_mesh_calc_edges() so selecting newly created edges is optional.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_mesh.h
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/blenkernel/intern/mesh_validate.c
    trunk/blender/source/blender/collada/MeshImporter.cpp
    trunk/blender/source/blender/editors/mesh/mesh_data.c

Modified: trunk/blender/source/blender/blenkernel/BKE_mesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mesh.h	2013-03-16 00:41:32 UTC (rev 55324)
+++ trunk/blender/source/blender/blenkernel/BKE_mesh.h	2013-03-16 01:19:03 UTC (rev 55325)
@@ -326,7 +326,7 @@
 int BKE_mesh_validate(struct Mesh *me, int do_verbose);
 int BKE_mesh_validate_dm(struct DerivedMesh *dm);
 
-void BKE_mesh_calc_edges(struct Mesh *mesh, int update);
+void BKE_mesh_calc_edges(struct Mesh *mesh, bool update, const bool select);
 
 void BKE_mesh_ensure_navmesh(struct Mesh *me);
 

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2013-03-16 00:41:32 UTC (rev 55324)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2013-03-16 01:19:03 UTC (rev 55325)
@@ -1198,7 +1198,7 @@
 
 		BKE_mesh_calc_normals(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL);
 
-		BKE_mesh_calc_edges(me, TRUE);
+		BKE_mesh_calc_edges(me, true, false);
 	}
 }
 
@@ -1523,7 +1523,7 @@
 
 		BKE_mesh_calc_normals(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL);
 
-		BKE_mesh_calc_edges(me, TRUE);
+		BKE_mesh_calc_edges(me, true, false);
 	}
 	else {
 		me = BKE_mesh_add(G.main, "Mesh");

Modified: trunk/blender/source/blender/blenkernel/intern/mesh_validate.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh_validate.c	2013-03-16 00:41:32 UTC (rev 55324)
+++ trunk/blender/source/blender/blenkernel/intern/mesh_validate.c	2013-03-16 01:19:03 UTC (rev 55325)
@@ -774,7 +774,7 @@
 		}
 
 		if (do_edge_recalc) {
-			BKE_mesh_calc_edges(mesh, TRUE);
+			BKE_mesh_calc_edges(mesh, true, false);
 		}
 	}
 
@@ -914,7 +914,7 @@
  * \param mesh  The mesh to add edges into
  * \param update  When true create new edges co-exist
  */
-void BKE_mesh_calc_edges(Mesh *mesh, int update)
+void BKE_mesh_calc_edges(Mesh *mesh, bool update, const bool select)
 {
 	CustomData edata;
 	EdgeHashIterator *ehi;
@@ -923,9 +923,11 @@
 	EdgeHash *eh = BLI_edgehash_new();
 	int i, totedge, totpoly = mesh->totpoly;
 	int med_index;
+	/* select for newly created meshes which are selected [#25595] */
+	const short ed_flag = (ME_EDGEDRAW | ME_EDGERENDER) | (select ? SELECT : 0);
 
 	if (mesh->totedge == 0)
-		update = FALSE;
+		update = false;
 
 	if (update) {
 		/* assume existing edges are valid
@@ -963,7 +965,7 @@
 		}
 		else {
 			BLI_edgehashIterator_getKey(ehi, &med->v1, &med->v2);
-			med->flag = ME_EDGEDRAW | ME_EDGERENDER | SELECT; /* select for newly created meshes which are selected [#25595] */
+			med->flag = ed_flag;
 		}
 
 		/* store the new edge index in the hash value */

Modified: trunk/blender/source/blender/collada/MeshImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/MeshImporter.cpp	2013-03-16 00:41:32 UTC (rev 55324)
+++ trunk/blender/source/blender/collada/MeshImporter.cpp	2013-03-16 01:19:03 UTC (rev 55325)
@@ -1084,7 +1084,7 @@
 	
 	read_vertices(mesh, me);
 	read_polys(mesh, me);
-	BKE_mesh_calc_edges(me, 0);
+	BKE_mesh_calc_edges(me, false, false);
 
 	// read_lines() must be called after the face edges have been generated.
 	// Oterwise the loose edges will be silently deleted again.

Modified: trunk/blender/source/blender/editors/mesh/mesh_data.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_data.c	2013-03-16 00:41:32 UTC (rev 55324)
+++ trunk/blender/source/blender/editors/mesh/mesh_data.c	2013-03-16 01:19:03 UTC (rev 55325)
@@ -885,7 +885,7 @@
 	}
 
 	if (calc_edges || ((mesh->totpoly || mesh->totface) && mesh->totedge == 0))
-		BKE_mesh_calc_edges(mesh, calc_edges);
+		BKE_mesh_calc_edges(mesh, calc_edges, true);
 
 	if (calc_tessface) {
 		if (tessface_input == FALSE) {




More information about the Bf-blender-cvs mailing list