diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-05-01 10:07:26 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-05-01 10:07:26 +0400 |
commit | 586a97166fe014cbb6012dd19a05533bd15771e5 (patch) | |
tree | dbe7839169b479454b64f698f66b41e68d34a97a /source/blender/editors/mesh | |
parent | 2cda8a9efbd15b1134c2594a15c2c42e9be71b59 (diff) |
replace error reports with poll() function for editmesh select ungrouped
Diffstat (limited to 'source/blender/editors/mesh')
-rw-r--r-- | source/blender/editors/mesh/editmesh_select.c | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c index 956d7cf1112..80ef8894971 100644 --- a/source/blender/editors/mesh/editmesh_select.c +++ b/source/blender/editors/mesh/editmesh_select.c @@ -3306,6 +3306,25 @@ void MESH_OT_select_random(wmOperatorType *ot) RNA_def_boolean(ot->srna, "extend", false, "Extend", "Extend the selection"); } +static int edbm_select_ungrouped_poll(bContext *C) +{ + if (ED_operator_editmesh(C)) { + Object *obedit = CTX_data_edit_object(C); + BMEditMesh *em = BKE_editmesh_from_object(obedit); + + if ((em->selectmode & SCE_SELECT_VERTEX) == 0) { + CTX_wm_operator_poll_msg_set(C, "Must be in vertex selection mode"); + } + else if (obedit->defbase.first == NULL) { + CTX_wm_operator_poll_msg_set(C, "No weights/vertex groups on object"); + } + else { + return true; + } + } + return false; +} + static int edbm_select_ungrouped_exec(bContext *C, wmOperator *op) { Object *obedit = CTX_data_edit_object(C); @@ -3313,16 +3332,6 @@ static int edbm_select_ungrouped_exec(bContext *C, wmOperator *op) BMVert *eve; BMIter iter; - if ((em->selectmode & SCE_SELECT_VERTEX) == 0) { - BKE_report(op->reports, RPT_ERROR, "Does not work out of vertex selection mode"); - return OPERATOR_CANCELLED; - } - - if (obedit->defbase.first == NULL) { - BKE_report(op->reports, RPT_ERROR, "No weights/vertex groups on object"); - return OPERATOR_CANCELLED; - } - if (!RNA_boolean_get(op->ptr, "extend")) { EDBM_flag_disable_all(em, BM_ELEM_SELECT); } @@ -3352,7 +3361,7 @@ void MESH_OT_select_ungrouped(wmOperatorType *ot) /* api callbacks */ ot->exec = edbm_select_ungrouped_exec; - ot->poll = ED_operator_editmesh; + ot->poll = edbm_select_ungrouped_poll; /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; |