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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-11-26 16:50:09 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-11-26 18:17:22 +0300
commitb711be9b99d90a40bdf787a756cb982eab5c1e61 (patch)
treeda21d9604cb163660eecb2a7866be20ec995862c /source/blender/windowmanager
parent9abcf56fa88dd849bf0f83fafe5d4666d3531cd2 (diff)
Keymaps: don't do CLICK event when PRESS was already handled.
This fixes conflicts where the tool and editor keymap use different event types. Tools need to be able to mouse buttons on PRESS without triggering CLICK events in the editor keymap.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index a9a248f027b..576f5470069 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2635,15 +2635,15 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
event->x = x;
event->y = y;
- win->eventstate->check_click = 0;
- win->eventstate->check_drag = 0;
+ win->eventstate->check_click = false;
+ win->eventstate->check_drag = false;
}
}
}
else {
wmWindow *win = CTX_wm_window(C);
if (win) {
- win->eventstate->check_drag = 0;
+ win->eventstate->check_drag = false;
}
}
}
@@ -3115,6 +3115,12 @@ void wm_event_do_handlers(bContext *C)
}
+ /* If press was handled, we don't want to do click. This way
+ * press in tool keymap can override click in editor keymap.*/
+ if (event->val == KM_PRESS && !wm_action_not_handled(action)) {
+ win->eventstate->check_click = false;
+ }
+
/* update previous mouse position for following events to use */
win->eventstate->prevx = event->x;
win->eventstate->prevy = event->y;