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>2014-06-03 17:00:39 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-06-03 17:00:39 +0400
commitf46b384fc5e66949c0c2ce974d2842dd76ee6be8 (patch)
tree781f4f5a208bb5c7356f76d80f8c26ce44731fef /source/blender/windowmanager/intern
parentb460674d64df7a598dc057a546e329eba6517287 (diff)
Change to key modifier should trigger re-evaluation of drag-and-drop
This change is part of a fix for T40435, but will postpone for now. Original patch by Sergey Sharybin
Diffstat (limited to 'source/blender/windowmanager/intern')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 64289e04d7a..175a8d20895 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2140,7 +2140,7 @@ static void wm_event_drag_test(wmWindowManager *wm, wmWindow *win, wmEvent *even
return;
}
- if (event->type == MOUSEMOVE)
+ if (event->type == MOUSEMOVE || ISKEYMODIFIER(event->type))
win->screen->do_draw_drag = true;
else if (event->type == ESCKEY) {
BLI_freelistN(&wm->drags);
@@ -2289,10 +2289,12 @@ void wm_event_do_handlers(bContext *C)
/* call even on non mouse events, since the */
wm_region_mouse_co(C, event);
- /* does polls for drop regions and checks uibuts */
- /* need to be here to make sure region context is true */
- if (ELEM(event->type, MOUSEMOVE, EVT_DROP)) {
- wm_drags_check_ops(C, event);
+ if (!BLI_listbase_is_empty(&wm->drags)) {
+ /* does polls for drop regions and checks uibuts */
+ /* need to be here to make sure region context is true */
+ if (ELEM(event->type, MOUSEMOVE, EVT_DROP) || ISKEYMODIFIER(event->type)) {
+ wm_drags_check_ops(C, event);
+ }
}
action |= wm_handlers_do(C, event, &ar->handlers);