diff options
author | Martin Poirier <theeth@yahoo.com> | 2009-11-30 01:16:29 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2009-11-30 01:16:29 +0300 |
commit | cd154da9732962870339952898499ed1b1c32d93 (patch) | |
tree | f59446523990d985a92542ab781d7707c8753009 /source/blender/editors/metaball | |
parent | 92b4316708bad0448f4c433ef9c6c2d3cc1f4fb5 (diff) |
1. Extend option for 3d view border select now does something (default True to keep same behavior)
2. Add action parameter to Select_All_Toggle operators, rename to Select_All.
Options are Toggle (default), Select, Deselect, Invert (same as select swap). This makes it possible to map separate hotkeys for select all and deselect all.
NOTE for Aligorith: I didn't change animation operators for select_all which already had an Invert operator. These should be fixed eventually.
Diffstat (limited to 'source/blender/editors/metaball')
-rw-r--r-- | source/blender/editors/metaball/mball_edit.c | 46 | ||||
-rw-r--r-- | source/blender/editors/metaball/mball_intern.h | 2 | ||||
-rw-r--r-- | source/blender/editors/metaball/mball_ops.c | 4 |
3 files changed, 33 insertions, 19 deletions
diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 09200514c0f..d4ad833d11e 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -189,49 +189,63 @@ MetaElem *add_metaball_primitive(bContext *C, int type, int newname) /***************************** Select/Deselect operator *****************************/ /* Select or deselect all MetaElements */ -static int select_deselect_all_metaelems_exec(bContext *C, wmOperator *op) +static int select_all_exec(bContext *C, wmOperator *op) { //Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); MetaBall *mb = (MetaBall*)obedit->data; MetaElem *ml; - int any_sel= 0; - - /* Is any metaelem selected? */ + int action = RNA_enum_get(op->ptr, "action"); + ml= mb->editelems->first; if(ml) { - while(ml) { - if(ml->flag & SELECT) break; - ml= ml->next; + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + while(ml) { + if(ml->flag & SELECT) { + action = SEL_DESELECT; + break; + } + ml= ml->next; + } } - if(ml) any_sel= 1; ml= mb->editelems->first; while(ml) { - if(any_sel) ml->flag &= ~SELECT; - else ml->flag |= SELECT; + switch (action) { + case SEL_SELECT: + ml->flag |= SELECT; + break; + case SEL_DESELECT: + ml->flag &= ~SELECT; + break; + case SEL_INVERT: + ml->flag ^= SELECT; + break; + } ml= ml->next; } WM_event_add_notifier(C, NC_GEOM|ND_SELECT, mb); - //DAG_id_flush_update(obedit->data, OB_RECALC_DATA); } return OPERATOR_FINISHED; } -void MBALL_OT_select_deselect_all_metaelems(wmOperatorType *ot) +void MBALL_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "Select/Deselect All"; - ot->description= "(de)select all metaelements."; - ot->idname= "MBALL_OT_select_deselect_all_metaelems"; + ot->description= "Change selection of all meta elements."; + ot->idname= "MBALL_OT_select_all"; /* callback functions */ - ot->exec= select_deselect_all_metaelems_exec; + ot->exec= select_all_exec; ot->poll= ED_operator_editmball; /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_select_all(ot); } /***************************** Select inverse operator *****************************/ diff --git a/source/blender/editors/metaball/mball_intern.h b/source/blender/editors/metaball/mball_intern.h index 8cf749733dd..fca9fc7e650 100644 --- a/source/blender/editors/metaball/mball_intern.h +++ b/source/blender/editors/metaball/mball_intern.h @@ -39,7 +39,7 @@ void MBALL_OT_reveal_metaelems(struct wmOperatorType *ot); void MBALL_OT_delete_metaelems(struct wmOperatorType *ot); void MBALL_OT_duplicate_metaelems(struct wmOperatorType *ot); -void MBALL_OT_select_deselect_all_metaelems(struct wmOperatorType *ot); +void MBALL_OT_select_all(struct wmOperatorType *ot); void MBALL_OT_select_inverse_metaelems(struct wmOperatorType *ot); void MBALL_OT_select_random_metaelems(struct wmOperatorType *ot); diff --git a/source/blender/editors/metaball/mball_ops.c b/source/blender/editors/metaball/mball_ops.c index 01da90212a0..b638eaecbc2 100644 --- a/source/blender/editors/metaball/mball_ops.c +++ b/source/blender/editors/metaball/mball_ops.c @@ -46,7 +46,7 @@ void ED_operatortypes_metaball(void) WM_operatortype_append(MBALL_OT_hide_metaelems); WM_operatortype_append(MBALL_OT_reveal_metaelems); - WM_operatortype_append(MBALL_OT_select_deselect_all_metaelems); + WM_operatortype_append(MBALL_OT_select_all); WM_operatortype_append(MBALL_OT_select_inverse_metaelems); WM_operatortype_append(MBALL_OT_select_random_metaelems); } @@ -68,7 +68,7 @@ void ED_keymap_metaball(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", DELKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MBALL_OT_duplicate_metaelems", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "MBALL_OT_select_deselect_all_metaelems", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "MBALL_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MBALL_OT_select_inverse_metaelems", IKEY, KM_PRESS, KM_CTRL, 0); } |