Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-08-17 10:11:00 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-08-17 10:11:49 +0300
commit4443831c6bc264f6017a309b6217beb72943abee (patch)
treec488354442d925c0c21f02097c5a9ac1bbfe43ee
parent6baa62245f2bc18cc6d12cfcd16575823028bcab (diff)
Edit Mesh: skip normals to vector with unselected meshes for "Delete"
Meshes with unselected elements are skipped but still called BM_custom_loop_normals_to_vector_layer.
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c46
1 files changed, 28 insertions, 18 deletions
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index b62eee67600..101c997fd1c 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -467,40 +467,50 @@ static int edbm_delete_exec(bContext *C, wmOperator *op)
BMEditMesh *em = BKE_editmesh_from_object(obedit);
const int type = RNA_enum_get(op->ptr, "type");
- BM_custom_loop_normals_to_vector_layer(em->bm);
-
switch (type) {
case MESH_DELETE_VERT: /* Erase Vertices */
- if (!(em->bm->totvertsel &&
- EDBM_op_callf(em, op, "delete geom=%hv context=%i", BM_ELEM_SELECT, DEL_VERTS))) {
+ if (em->bm->totvertsel == 0) {
+ continue;
+ }
+ BM_custom_loop_normals_to_vector_layer(em->bm);
+ if (!EDBM_op_callf(em, op, "delete geom=%hv context=%i", BM_ELEM_SELECT, DEL_VERTS)) {
continue;
}
break;
case MESH_DELETE_EDGE: /* Erase Edges */
- if (!(em->bm->totedgesel &&
- EDBM_op_callf(em, op, "delete geom=%he context=%i", BM_ELEM_SELECT, DEL_EDGES))) {
+ if (em->bm->totedgesel == 0) {
+ continue;
+ }
+ BM_custom_loop_normals_to_vector_layer(em->bm);
+ if (!EDBM_op_callf(em, op, "delete geom=%he context=%i", BM_ELEM_SELECT, DEL_EDGES)) {
continue;
}
break;
case MESH_DELETE_FACE: /* Erase Faces */
- if (!(em->bm->totfacesel &&
- EDBM_op_callf(em, op, "delete geom=%hf context=%i", BM_ELEM_SELECT, DEL_FACES))) {
+ if (em->bm->totfacesel == 0) {
+ continue;
+ }
+ BM_custom_loop_normals_to_vector_layer(em->bm);
+ if (!EDBM_op_callf(em, op, "delete geom=%hf context=%i", BM_ELEM_SELECT, DEL_FACES)) {
continue;
}
break;
- case MESH_DELETE_EDGE_FACE:
- /* Edges and Faces */
- if (!((em->bm->totedgesel || em->bm->totfacesel) &&
- EDBM_op_callf(
- em, op, "delete geom=%hef context=%i", BM_ELEM_SELECT, DEL_EDGESFACES))) {
+ case MESH_DELETE_EDGE_FACE: /* Edges and Faces */
+ if ((em->bm->totedgesel == 0) && (em->bm->totfacesel == 0)) {
+ continue;
+ }
+ BM_custom_loop_normals_to_vector_layer(em->bm);
+ if (!EDBM_op_callf(
+ em, op, "delete geom=%hef context=%i", BM_ELEM_SELECT, DEL_EDGESFACES)) {
continue;
}
break;
- case MESH_DELETE_ONLY_FACE:
- /* Only faces. */
- if (!(em->bm->totfacesel &&
- EDBM_op_callf(
- em, op, "delete geom=%hf context=%i", BM_ELEM_SELECT, DEL_ONLYFACES))) {
+ case MESH_DELETE_ONLY_FACE: /* Only faces. */
+ if (em->bm->totfacesel == 0) {
+ continue;
+ }
+ BM_custom_loop_normals_to_vector_layer(em->bm);
+ if (!EDBM_op_callf(em, op, "delete geom=%hf context=%i", BM_ELEM_SELECT, DEL_ONLYFACES)) {
continue;
}
break;