Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv7203/src

Modified Files:
        mswindow.c 
Log Message:
Add clickDelay functionality.  As with any continuous mouse event, only
while the mouse is moving, is mouse input processed.

Index: mswindow.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- mswindow.c  22 Mar 2007 06:40:18 -0000      1.52
+++ mswindow.c  26 Mar 2007 02:47:18 -0000      1.53
@@ -1870,6 +1870,7 @@
 #if defined(MOTION_MOUSE) || defined(XTRA_MESSAGE_UI)
     static POINTS prev_pos;
     static HWND LastPressHwnd;
+    static int delaytime = 0;
 #endif
 
     switch (msg)
@@ -2046,6 +2047,7 @@
 
 #ifdef MOTION_MOUSE
         prev_pos = MAKEPOINTS (lParam);
+        delaytime = udcounter;
 #endif
         EventQueue[EventTail].type = W_EV_BUTTON;
         return (0);
@@ -2078,6 +2080,7 @@
 
 #ifdef MOTION_MOUSE
         prev_pos = MAKEPOINTS (lParam);
+        delaytime = udcounter;
 #endif
         EventQueue[EventTail].type = W_EV_BUTTON;
         return (0);
@@ -2109,6 +2112,7 @@
 
 #ifdef MOTION_MOUSE
         prev_pos = MAKEPOINTS (lParam);
+        delaytime = udcounter;
 #endif
         EventQueue[EventTail].type = W_EV_BUTTON;
         return (0);
@@ -2167,6 +2171,7 @@
 
 #ifdef MOTION_MOUSE
         prev_pos = MAKEPOINTS (lParam);
+        delaytime = udcounter;
 #endif
         EventQueue[EventTail].type = W_EV_BUTTON;
         return (TRUE); /* MSDN says you SHOULD return TRUE if processing 
WM_XBUTTONDOWN */
@@ -2343,6 +2348,18 @@
         if (thresh < motionThresh)
             return (0);
 
+        //Check to see if click delay in effect.  If so, return.  If not, 
reset timer.
+        //Only works if mouse is moving, but that is true for all continuous 
mouse events,
+        //i.e. holding down torp button without moving the mouse will not 
release a continuous
+        //stream of torps.  This problem is due to a design flaw in the 
Windows event loop.
+        if (clickDelay)
+        {
+            if (delaytime + clickDelay > udcounter)
+                return (0);
+            else
+                delaytime = udcounter;
+        }
+
         prev_pos = MAKEPOINTS (lParam);
 
 #ifdef SHIFTED_MOUSE


_______________________________________________
netrek-cvs mailing list
[email protected]
http://mailman.us.netrek.org/mailman/listinfo/netrek-cvs

Reply via email to