[Bf-blender-cvs] [90c9458b2f9] blender2.8: Multi- Objects: MESH_OT_select_face_by_sides by Rainer Trummer
Dalai Felinto
noreply at git.blender.org
Mon May 14 15:23:28 CEST 2018
Commit: 90c9458b2f9fe596df30d245cc7b209d18a40059
Author: Dalai Felinto
Date: Mon May 14 15:21:06 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB90c9458b2f9fe596df30d245cc7b209d18a40059
Multi- Objects: MESH_OT_select_face_by_sides by Rainer Trummer
Maniphest Tasks: T54643
Differential Revision: https://developer.blender.org/D3301
===================================================================
M source/blender/editors/mesh/editmesh_select.c
===================================================================
diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index a232deed688..f75b5cb7e01 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -3207,21 +3207,27 @@ void MESH_OT_select_linked_pick(wmOperatorType *ot)
static int edbm_select_face_by_sides_exec(bContext *C, wmOperator *op)
{
- Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = BKE_editmesh_from_object(obedit);
- BMFace *efa;
- BMIter iter;
+ ViewLayer *view_layer = CTX_data_view_layer(C);
+ uint objects_len = 0;
+ const bool extend = RNA_boolean_get(op->ptr, "extend");
const int numverts = RNA_int_get(op->ptr, "number");
const int type = RNA_enum_get(op->ptr, "type");
+ Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
- if (!RNA_boolean_get(op->ptr, "extend"))
- EDBM_flag_disable_all(em, BM_ELEM_SELECT);
+ for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
+ Object *obedit = objects[ob_index];
+ BMEditMesh *em = BKE_editmesh_from_object(obedit);
+ BMFace *efa;
+ BMIter iter;
- BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
+ if (!extend)
+ EDBM_flag_disable_all(em, BM_ELEM_SELECT);
+
+ BM_ITER_MESH(efa, &iter, em->bm, BM_FACES_OF_MESH) {
- bool select;
+ bool select;
- switch (type) {
+ switch (type) {
case 0:
select = (efa->len < numverts);
break;
@@ -3238,16 +3244,19 @@ static int edbm_select_face_by_sides_exec(bContext *C, wmOperator *op)
BLI_assert(0);
select = false;
break;
- }
+ }
- if (select) {
- BM_face_select_set(em->bm, efa, true);
+ if (select) {
+ BM_face_select_set(em->bm, efa, true);
+ }
}
- }
- EDBM_selectmode_flush(em);
+ EDBM_selectmode_flush(em);
- WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
+ WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
+ }
+
+ MEM_freeN(objects);
return OPERATOR_FINISHED;
}
More information about the Bf-blender-cvs
mailing list