[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