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:
authorCampbell Barton <ideasman42@gmail.com>2019-03-08 05:35:48 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-03-08 05:35:48 +0300
commit96af595f63414deb6a9247bb548023db86f923a1 (patch)
treeee35041e0b40673fd4c84ba444c4710c9ba2095b /source/blender/windowmanager
parent0ba143a1d67561f581fcfa7bc7a10e38a44efefe (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')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c14
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