Revision: 29994 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29994 Author: blendix Date: 2010-07-05 18:42:42 +0200 (Mon, 05 Jul 2010)
Log Message: ----------- Fix #21201: double click didn't use the original mouse position, now it stores it and sets it later when the double click event is handled. Decided to not reuse prevx but made prevclickx, because there may be multiple mousemoves between the two clicks, and prevx is already used for some other tricky things. Modified Paths: -------------- trunk/blender/source/blender/windowmanager/WM_types.h trunk/blender/source/blender/windowmanager/intern/wm_event_system.c Modified: trunk/blender/source/blender/windowmanager/WM_types.h =================================================================== --- trunk/blender/source/blender/windowmanager/WM_types.h 2010-07-05 16:20:52 UTC (rev 29993) +++ trunk/blender/source/blender/windowmanager/WM_types.h 2010-07-05 16:42:42 UTC (rev 29994) @@ -326,6 +326,7 @@ short prevval; short prevx, prevy; double prevclicktime; + short prevclickx, prevclicky; /* modifier states */ short shift, ctrl, alt, oskey; /* oskey is apple or windowskey, value denotes order of pressed */ Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c =================================================================== --- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c 2010-07-05 16:20:52 UTC (rev 29993) +++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c 2010-07-05 16:42:42 UTC (rev 29994) @@ -1433,6 +1433,8 @@ /* test for double click first */ if ((PIL_check_seconds_timer() - win->eventstate->prevclicktime) * 1000 < U.dbl_click_time) { event->val = KM_DBL_CLICK; + event->x = win->eventstate->prevclickx; + event->y = win->eventstate->prevclicky; action |= wm_handlers_do(C, event, handlers); } @@ -1719,6 +1721,8 @@ /* set click time on first click (press -> release) */ if (win->eventstate->prevval == KM_PRESS && event->val == KM_RELEASE) { win->eventstate->prevclicktime = PIL_check_seconds_timer(); + win->eventstate->prevclickx = event->x; + win->eventstate->prevclicky = event->y; } } else { /* reset click time if event type not the same */ @@ -1731,6 +1735,8 @@ win->eventstate->prevtype = event->type; win->eventstate->prevval = event->val; win->eventstate->prevclicktime = PIL_check_seconds_timer(); + win->eventstate->prevclickx = event->x; + win->eventstate->prevclicky = event->y; } else { /* reset if not */ win->eventstate->prevtype = -1; win->eventstate->prevval = 0; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs