[Bf-blender-cvs] [102644cb8cb] master: Fix releasing modifier keys suppressing drag events

Campbell Barton noreply at git.blender.org
Wed Mar 2 11:49:13 CET 2022


Commit: 102644cb8cbb8b21e55643cebe2ed364885023a6
Author: Campbell Barton
Date:   Wed Mar 2 21:43:22 2022 +1100
Branches: master
https://developer.blender.org/rB102644cb8cbb8b21e55643cebe2ed364885023a6

Fix releasing modifier keys suppressing drag events

Always use event.prev_click_type since this is never set on key-release,
which could still interrupt dragging (box selecting for example).

===================================================================

M	source/blender/windowmanager/intern/wm_event_system.c

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index c6b2e81d121..375cc4e785e 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -3178,7 +3178,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
 
         copy_v2_v2_int(event->xy, event->prev_click_xy);
         event->val = KM_CLICK_DRAG;
-        event->type = event->prev_type;
+        event->type = event->prev_click_type;
         event->modifier = event->prev_click_modifier;
         event->keymodifier = event->prev_click_keymodifier;
         event->direction = direction;
@@ -3215,7 +3215,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
       }
       else if (event->val == KM_RELEASE) {
         if (win->event_queue_check_drag) {
-          if ((event->prev_type != event->type) &&
+          if ((event->prev_click_type != event->type) &&
               (ISKEYMODIFIER(event->type) || (event->type == event->prev_click_keymodifier))) {
             /* Support releasing modifier keys without canceling the drag event, see T89989.
              * NOTE: this logic is replicated for tweak gestures. */
@@ -3226,7 +3226,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
         }
       }
 
-      if (event->prev_type == event->type) {
+      if (event->prev_click_type == event->type) {
 
         if (event->val == KM_RELEASE) {
           if (event->prev_val == KM_PRESS) {



More information about the Bf-blender-cvs mailing list