[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51728] trunk/blender/source/blender/ windowmanager/intern/wm_event_system.c: A last (I hope) tweak for double click detection.

Ton Roosendaal ton at blender.org
Mon Oct 29 12:08:13 CET 2012


Revision: 51728
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51728
Author:   ton
Date:     2012-10-29 11:08:10 +0000 (Mon, 29 Oct 2012)
Log Message:
-----------
A last (I hope) tweak for double click detection.

Modified Paths:
--------------
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2012-10-29 08:59:47 UTC (rev 51727)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2012-10-29 11:08:10 UTC (rev 51728)
@@ -1331,7 +1331,7 @@
 
 	/* the matching rules */
 	if (kmitype == KM_TEXTINPUT)
-		if (winevent->val == KM_PRESS)
+		if (winevent->val == KM_PRESS) // prevent double clicks
 			if (ISTEXTINPUT(winevent->type) && (winevent->ascii || winevent->utf8_buf[0])) return 1;
 	if (kmitype != KM_ANY)
 		if (winevent->type != kmitype) return 0;
@@ -2103,7 +2103,7 @@
 			if ((G.debug & G_DEBUG_HANDLERS) && event && !ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE)) {
 				printf("%s: pass on evt %d val %d\n", __func__, event->type, event->val);
 			}
-
+			
 			wm_eventemulation(event);
 
 			CTX_wm_window_set(C, win);
@@ -2804,10 +2804,6 @@
 		{
 			GHOST_TEventButtonData *bd = customdata;
 			
-			/* copy prev state to event state */
-			evt->prevval = evt->val;
-			evt->prevtype = evt->type;
-
 			/* get value and type from ghost */
 			event.val = (type == GHOST_kEventButtonDown) ? KM_PRESS : KM_RELEASE;
 			
@@ -2822,6 +2818,11 @@
 			else
 				event.type = MIDDLEMOUSE;
 			
+			/* copy prev state to event state */
+			if (event.val == KM_PRESS) {
+				evt->prevval = evt->val;
+				evt->prevtype = evt->type;
+			}
 			/* copy to event state */
 			evt->val = event.val;
 			evt->type = event.type;
@@ -2842,10 +2843,11 @@
 				    (ABS(event.y - evt->prevclicky)) <= 2 &&
 				    ((PIL_check_seconds_timer() - evt->prevclicktime) * 1000 < U.dbl_click_time))
 				{
+					// printf("double click\n");
 					event.val = KM_DBL_CLICK;
 				}
 			}
-			if (event.val == KM_RELEASE) {
+			if (event.val == KM_PRESS) {
 				evt->prevclicktime = PIL_check_seconds_timer();
 				evt->prevclickx = event.x;
 				evt->prevclicky = event.y;
@@ -2882,8 +2884,10 @@
 			event.val = (type == GHOST_kEventKeyDown) ? KM_PRESS : KM_RELEASE;
 			
 			/* copy prev state to event state */
-			evt->prevval = evt->val;
-			evt->prevtype = evt->type;
+			if (event.val == KM_PRESS) {
+				evt->prevval = evt->val;
+				evt->prevtype = evt->type;
+			}
 
 			/* copy to event state */
 			evt->val = event.val;
@@ -2973,7 +2977,7 @@
 			if (event.type == ESCKEY && event.val == KM_PRESS)
 				G.is_break = TRUE;
 			
-			if (event.val == KM_RELEASE) {
+			if (event.val == KM_PRESS) {
 				evt->prevclicktime = PIL_check_seconds_timer();
 				evt->prevclickx = event.x;
 				evt->prevclicky = event.y;




More information about the Bf-blender-cvs mailing list