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

Reply via email to