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