[Bf-blender-cvs] [137586a13c7] master: Event System: Prevent mouse motion in click events

Campbell Barton noreply at git.blender.org
Mon Oct 16 05:26:23 CEST 2017


Commit: 137586a13c758d95472c3a3eabfc7dd4b22b7502
Author: Campbell Barton
Date:   Mon Oct 16 14:19:03 2017 +1100
Branches: master
https://developer.blender.org/rB137586a13c758d95472c3a3eabfc7dd4b22b7502

Event System: Prevent mouse motion in click events

Don't convert mouse button events to click if they include dragging.
Double-click events already checked for this.

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

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 7e7314cc0c8..a6777d40398 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -83,6 +83,9 @@
 
 #include "RNA_enum_types.h"
 
+/* Motion in pixels allowed before we don't consider single/double click. */
+#define WM_EVENT_CLICK_WIGGLE_ROOM 2
+
 static void wm_notifier_clear(wmNotifier *note);
 static void update_tablet_data(wmWindow *win, wmEvent *event);
 
@@ -2204,7 +2207,9 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
 				
 				if ((event->val == KM_RELEASE) &&
 				    (win->eventstate->prevval == KM_PRESS) &&
-				    (win->eventstate->check_click == true))
+				    (win->eventstate->check_click == true) &&
+				    ((abs(event->x - win->eventstate->prevclickx)) <= WM_EVENT_CLICK_WIGGLE_ROOM &&
+				     (abs(event->y - win->eventstate->prevclicky)) <= WM_EVENT_CLICK_WIGGLE_ROOM))
 				{
 					event->val = KM_CLICK;
 					
@@ -3163,8 +3168,9 @@ static bool wm_event_is_double_click(wmEvent *event, const wmEvent *event_state)
 	    (event_state->prevval == KM_RELEASE) &&
 	    (event->val == KM_PRESS))
 	{
-		if ((ISMOUSE(event->type) == false) || ((ABS(event->x - event_state->prevclickx)) <= 2 &&
-		                                        (ABS(event->y - event_state->prevclicky)) <= 2))
+		if ((ISMOUSE(event->type) == false) ||
+		    ((abs(event->x - event_state->prevclickx)) <= WM_EVENT_CLICK_WIGGLE_ROOM &&
+		     (abs(event->y - event_state->prevclicky)) <= WM_EVENT_CLICK_WIGGLE_ROOM))
 		{
 			if ((PIL_check_seconds_timer() - event_state->prevclicktime) * 1000 < U.dbl_click_time) {
 				return true;



More information about the Bf-blender-cvs mailing list