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:
authorDalai Felinto <dfelinto@gmail.com>2018-11-07 04:30:30 +0300
committerDalai Felinto <dfelinto@gmail.com>2018-11-07 04:32:49 +0300
commit0a893c0901d6fba0501ea4b341c5b9c0747be2af (patch)
tree1c243e3277586f1a50eaaad899965c58cb7432a3 /source/blender/editors/metaball
parentf6bec570c5cd87a1e8635837650217c783b158e0 (diff)
Multi-Objects: MBALL_OT_select_all
Based on D3893 by Habib Gahbiche.
Diffstat (limited to 'source/blender/editors/metaball')
-rw-r--r--source/blender/editors/metaball/mball_edit.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c
index 816d91dbad9..b959ff80024 100644
--- a/source/blender/editors/metaball/mball_edit.c
+++ b/source/blender/editors/metaball/mball_edit.c
@@ -125,38 +125,38 @@ MetaElem *ED_mball_add_primitive(bContext *UNUSED(C), Object *obedit, float mat[
/* Select or deselect all MetaElements */
static int mball_select_all_exec(bContext *C, wmOperator *op)
{
- Object *obedit = CTX_data_edit_object(C);
- MetaBall *mb = (MetaBall *)obedit->data;
- MetaElem *ml;
int action = RNA_enum_get(op->ptr, "action");
- if (BLI_listbase_is_empty(mb->editelems))
- return OPERATOR_CANCELLED;
+ ViewLayer *view_layer = CTX_data_view_layer(C);
+ uint objects_len = 0;
+ Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
if (action == SEL_TOGGLE) {
- action = SEL_SELECT;
- for (ml = mb->editelems->first; ml; ml = ml->next) {
- if (ml->flag & SELECT) {
- action = SEL_DESELECT;
- break;
- }
- }
+ action = BKE_mball_is_any_selected_multi(objects, objects_len) ?
+ SEL_DESELECT :
+ SEL_SELECT;
}
switch (action) {
case SEL_SELECT:
- BKE_mball_select_all(mb);
+ BKE_mball_select_all_multi(objects, objects_len);
break;
case SEL_DESELECT:
- BKE_mball_deselect_all(mb);
+ BKE_mball_deselect_all_multi(objects, objects_len);
break;
case SEL_INVERT:
- BKE_mball_select_swap(mb);
+ BKE_mball_select_swap_multi(objects, objects_len);
break;
}
- DEG_id_tag_update(&mb->id, DEG_TAG_SELECT_UPDATE);
- WM_event_add_notifier(C, NC_GEOM | ND_SELECT, mb);
+ for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
+ Object *obedit = objects[ob_index];
+ MetaBall *mb = (MetaBall *)obedit->data;
+ DEG_id_tag_update(&mb->id, DEG_TAG_SELECT_UPDATE);
+ WM_event_add_notifier(C, NC_GEOM | ND_SELECT, mb);
+ }
+
+ MEM_freeN(objects);
return OPERATOR_FINISHED;
}