diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-03-16 05:19:03 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-03-16 05:19:03 +0400 |
commit | a0351fd97e7f0f2bea153199d4cd004d6f76f034 (patch) | |
tree | 2d4a1940836b1cc253784740b0d5106d308d1085 /source/blender | |
parent | db77fdc6ff99e25c00d73d5978f64daca5ce2b30 (diff) |
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.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh_validate.c | 10 | ||||
-rw-r--r-- | source/blender/collada/MeshImporter.cpp | 2 | ||||
-rw-r--r-- | source/blender/editors/mesh/mesh_data.c | 2 |
5 files changed, 11 insertions, 9 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index aff63eccce3..398d1fe8545 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -326,7 +326,7 @@ int BKE_mesh_validate_arrays( 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); diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index f48e7856959..1d79c7afe43 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1198,7 +1198,7 @@ void BKE_mesh_from_metaball(ListBase *lb, Mesh *me) 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 @@ void BKE_mesh_from_nurbs_displist(Object *ob, ListBase *dispbase, int use_orco_u 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"); diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c index 74d3645ea66..9d16d38220a 100644 --- a/source/blender/blenkernel/intern/mesh_validate.c +++ b/source/blender/blenkernel/intern/mesh_validate.c @@ -774,7 +774,7 @@ int BKE_mesh_validate_arrays(Mesh *mesh, } if (do_edge_recalc) { - BKE_mesh_calc_edges(mesh, TRUE); + BKE_mesh_calc_edges(mesh, true, false); } } @@ -914,7 +914,7 @@ int BKE_mesh_validate_dm(DerivedMesh *dm) * \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 @@ void BKE_mesh_calc_edges(Mesh *mesh, int update) 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 @@ void BKE_mesh_calc_edges(Mesh *mesh, int update) } 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 */ diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp index 7d8a0cf3bc0..71d3ada03dd 100644 --- a/source/blender/collada/MeshImporter.cpp +++ b/source/blender/collada/MeshImporter.cpp @@ -1084,7 +1084,7 @@ bool MeshImporter::write_geometry(const COLLADAFW::Geometry *geom) 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. diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index dbdce4c2f36..99f526f95f3 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -885,7 +885,7 @@ void ED_mesh_update(Mesh *mesh, bContext *C, int calc_edges, int calc_tessface) } 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) { |