From 661d363e13ff3c86b30d09333e5334146e5da79f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 21 Jan 2020 02:52:20 +1100 Subject: Fix T73162: Modal tools cant be mapped to MMB Also rename struct members to 'launch_event', since it's more descriptive and was called this in some places. --- source/blender/editors/mesh/editmesh_bevel.c | 6 +++++- source/blender/editors/mesh/editmesh_inset.c | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/mesh') diff --git a/source/blender/editors/mesh/editmesh_bevel.c b/source/blender/editors/mesh/editmesh_bevel.c index 02e4d0eb708..42fa3db7c57 100644 --- a/source/blender/editors/mesh/editmesh_bevel.c +++ b/source/blender/editors/mesh/editmesh_bevel.c @@ -95,6 +95,7 @@ typedef struct { uint ob_store_len; /* modal only */ + int launch_event; float mcenter[2]; void *draw_handle_pixel; short gizmo_flag; @@ -520,6 +521,8 @@ static int edbm_bevel_invoke(bContext *C, wmOperator *op, const wmEvent *event) opdata = op->customdata; + opdata->launch_event = WM_userdef_event_type_from_keymap_type(event->type); + /* initialize mouse values */ if (!calculateTransformCenter(C, V3D_AROUND_CENTER_MEDIAN, center_3d, opdata->mcenter)) { /* in this case the tool will likely do nothing, @@ -710,7 +713,8 @@ static int edbm_bevel_modal(bContext *C, wmOperator *op, const wmEvent *event) short eval = event->val; /* When activated from toolbar, need to convert leftmouse release to confirm */ - if (etype == LEFTMOUSE && eval == KM_RELEASE && RNA_boolean_get(op->ptr, "release_confirm")) { + if (ELEM(etype, LEFTMOUSE, opdata->launch_event) && (eval == KM_RELEASE) && + RNA_boolean_get(op->ptr, "release_confirm")) { etype = EVT_MODAL_MAP; eval = BEV_MODAL_CONFIRM; } diff --git a/source/blender/editors/mesh/editmesh_inset.c b/source/blender/editors/mesh/editmesh_inset.c index 9e004f3e289..a1b1ea31ead 100644 --- a/source/blender/editors/mesh/editmesh_inset.c +++ b/source/blender/editors/mesh/editmesh_inset.c @@ -72,6 +72,7 @@ typedef struct { uint ob_store_len; /* modal only */ + int launch_event; float mcenter[2]; void *draw_handle_pixel; short gizmo_flag; @@ -348,6 +349,8 @@ static int edbm_inset_invoke(bContext *C, wmOperator *op, const wmEvent *event) opdata = op->customdata; + opdata->launch_event = WM_userdef_event_type_from_keymap_type(event->type); + /* initialize mouse values */ if (!calculateTransformCenter(C, V3D_AROUND_CENTER_MEDIAN, center_3d, opdata->mcenter)) { /* in this case the tool will likely do nothing, @@ -389,6 +392,12 @@ static int edbm_inset_modal(bContext *C, wmOperator *op, const wmEvent *event) return OPERATOR_CANCELLED; } } + else if ((event->type == opdata->launch_event) && (event->val == KM_RELEASE) && + RNA_boolean_get(op->ptr, "release_confirm")) { + edbm_inset_calc(op); + edbm_inset_exit(C, op); + return OPERATOR_FINISHED; + } else { bool handled = false; switch (event->type) { -- cgit v1.2.3