diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-03-08 05:35:48 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-03-08 05:35:48 +0300 |
commit | 96af595f63414deb6a9247bb548023db86f923a1 (patch) | |
tree | ee35041e0b40673fd4c84ba444c4710c9ba2095b /source/blender/windowmanager/intern/wm_event_system.c | |
parent | 0ba143a1d67561f581fcfa7bc7a10e38a44efefe (diff) |
WM: fix double click handling in modal keymaps
Model keymaps wasn't matching double-click events with press
as is done in regular keymap handling.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_event_system.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 603e563d232..0ac5265fac4 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1933,6 +1933,8 @@ static bool wm_eventmatch(const wmEvent *winevent, const wmKeyMapItem *kmi) /* operator exists */ static void wm_event_modalkeymap(const bContext *C, wmOperator *op, wmEvent *event, bool *dbl_click_disabled) { + wmOperator *op_init = op; + /* support for modal keymap in macros */ if (op->opm) op = op->opm; @@ -1954,6 +1956,18 @@ static void wm_event_modalkeymap(const bContext *C, wmOperator *op, wmEvent *eve } } } + + /* If double click isn't handled, re-run this function with with press. */ + if ((event->type != EVT_MODAL_MAP) && + (event->val == KM_DBL_CLICK)) + { + event->val = KM_PRESS; + wm_event_modalkeymap(C, op_init, event, NULL); + if (event->type != EVT_MODAL_MAP) { + event->val = KM_DBL_CLICK; + } + } + } else { /* modal keymap checking returns handled events fine, but all hardcoded modal |