[Bf-blender-cvs] [2b9edbc98be] master: WM: suppress drag events if motion is handled

Campbell Barton noreply at git.blender.org
Fri Jun 15 19:11:12 CEST 2018


Commit: 2b9edbc98becb540f1f907b7c31d7971b1603079
Author: Campbell Barton
Date:   Fri Jun 15 19:09:43 2018 +0200
Branches: master
https://developer.blender.org/rB2b9edbc98becb540f1f907b7c31d7971b1603079

WM: suppress drag events if motion is handled

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

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 b9fe7d28838..7e26ffa52f8 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2252,24 +2252,34 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
 		return action;
 
 	if (ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE)) {
-		if (event->check_drag) {
-			wmWindow *win = CTX_wm_window(C);
-			if ((abs(event->x - win->eventstate->prevclickx)) >= U.tweak_threshold ||
-			    (abs(event->y - win->eventstate->prevclicky)) >= U.tweak_threshold)
-			{
-				short val = event->val;
-				short type = event->type;
-				event->val = KM_CLICK_DRAG;
-				event->type = win->eventstate->type;
 
-				CLOG_INFO(WM_LOG_HANDLERS, 1, "handling PRESS_DRAG");
+		/* Test for CLICK_DRAG events. */
+		if (wm_action_not_handled(action)) {
+			if (event->check_drag) {
+				wmWindow *win = CTX_wm_window(C);
+				if ((abs(event->x - win->eventstate->prevclickx)) >= U.tweak_threshold ||
+				    (abs(event->y - win->eventstate->prevclicky)) >= U.tweak_threshold)
+				{
+					short val = event->val;
+					short type = event->type;
+					event->val = KM_CLICK_DRAG;
+					event->type = win->eventstate->type;
+
+					CLOG_INFO(WM_LOG_HANDLERS, 1, "handling PRESS_DRAG");
 
-				action |= wm_handlers_do_intern(C, event, handlers);
+					action |= wm_handlers_do_intern(C, event, handlers);
 
-				event->val = val;
-				event->type = type;
+					event->val = val;
+					event->type = type;
 
-				win->eventstate->check_click = 0;
+					win->eventstate->check_click = 0;
+					win->eventstate->check_drag = 0;
+				}
+			}
+		}
+		else {
+			wmWindow *win = CTX_wm_window(C);
+			if (win) {
 				win->eventstate->check_drag = 0;
 			}
 		}
@@ -2277,7 +2287,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
 	else if (ISMOUSE_BUTTON(event->type) || ISKEYBOARD(event->type)) {
 		/* All events that don't set wmEvent.prevtype must be ignored. */
 
-		/* test for CLICK events */
+		/* Test for CLICK events. */
 		if (wm_action_not_handled(action)) {
 			wmWindow *win = CTX_wm_window(C);
 
@@ -2329,9 +2339,9 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
 		}
 		else {
 			wmWindow *win = CTX_wm_window(C);
-
-			if (win)
+			if (win) {
 				win->eventstate->check_click = 0;
+			}
 		}
 	}



More information about the Bf-blender-cvs mailing list