[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