There's been a feature that's missing in the UNIX version of COW that is
present in the win32 version, which is support for continuousMouse (ie.
if you press a mouse button and keep it down, it will behave as if you
have pressed it multiple times).


I've found the cause, which is shown in the diff below.  Basically
if a MouseMotionEvent occurs, it wasn't checking the right event (it
was checking 'button', which is a MouseButtonEvent (ie for mouse clicks,
but not movement).  The right event is 'motion'.

Also, I took out some dead code (it seems to be useless) from 
input.c::buttonaction(), which returns without processing the event 
if the event type is W_EV_CM_BUTTON (a mouse motion event), this
prevented the correct processing of motion events, since it returns
without doing anything.

If it's ok with everyone I would like to commit this. (PLEASE so I
don't have to reboot to windows every time I want to trek ;))

gerard




Index: input.c
===================================================================
RCS file: /cvsroot/netrek/client/cow/input.c,v
retrieving revision 1.7
diff -c -r1.7 input.c
*** input.c	2001/08/21 20:52:15	1.7
--- input.c	2001/12/08 03:05:12
***************
*** 1192,1204 ****
  	}
      }
  
- #ifdef MOTION_MOUSE
-   if ((data->type == W_EV_CM_BUTTON) &&		 /* KOC - 10/18/95     */
-       (!motion_mouse_enablable) &&		 /* Hack for            */
-       (data->key != W_RBUTTON))			 /* continuous_steer    */
-     return;
- #endif
- 
    if (data->Window == infow)
      {
        int     x, y;
--- 1192,1197 ----
Index: x11window.c
===================================================================
RCS file: /cvsroot/netrek/client/cow/x11window.c,v
retrieving revision 1.5
diff -c -r1.5 x11window.c
*** x11window.c	2001/08/21 20:52:15	1.5
--- x11window.c	2001/12/08 03:05:21
***************
*** 1606,1639 ****
  	      }
  #endif
  
! 	  switch (button->button & 0xf)
  	    {
! 	    case Button3:
  	      wevent->key = W_RBUTTON;
  	      break;
! 	    case Button1:
  	      wevent->key = W_LBUTTON;
  	      break;
! 	    case Button2:
  	      wevent->key = W_MBUTTON;
  	      break;
  #ifdef Button4
! 	    case Button4:
  	      wevent->key = W_WUBUTTON;
  	      break;
  #endif
  #ifdef Button5
! 	    case Button5:
  	      wevent->key = W_WDBUTTON;
  	      break;
  #endif
  #ifdef Button6
! 	    case Button6:
  	      wevent->key = W_X1BUTTON;
  	      break;
  #endif
  #ifdef Button7
! 	    case Button7:
  	      wevent->key = W_X2BUTTON;
  	      break;
  #endif
--- 1606,1639 ----
  	      }
  #endif
  
! 	  switch (motion->state)
  	    {
! 	    case Button3Mask:
  	      wevent->key = W_RBUTTON;
  	      break;
! 	    case Button1Mask:
  	      wevent->key = W_LBUTTON;
  	      break;
! 	    case Button2Mask:
  	      wevent->key = W_MBUTTON;
  	      break;
  #ifdef Button4
! 	    case Button4Mask:
  	      wevent->key = W_WUBUTTON;
  	      break;
  #endif
  #ifdef Button5
! 	    case Button5Mask:
  	      wevent->key = W_WDBUTTON;
  	      break;
  #endif
  #ifdef Button6
! 	    case Button6Mask:
  	      wevent->key = W_X1BUTTON;
  	      break;
  #endif
  #ifdef Button7
! 	    case Button7Mask:
  	      wevent->key = W_X2BUTTON;
  	      break;
  #endif