There is a problem with GrMouseWarp in Windows.
The Windows function "SetCursorPos" sets the mouse cursor to the window coordinates but GRX, the screen context resides in the client area of the window and the GRX mouse cursor and the Windows mouse cursor are unsynchronized. The Windows function "ClientToScreen" will synchronize the the GRX and Windows mouse cursors. Below is a replacement GrMouseWarp function that is found in "grev_w32.c"
void GrMouseWarp(int x, int y) { POINT point;
MOUINFO->xpos = imax(MOUINFO->xmin, imin(MOUINFO->xmax, x)); MOUINFO->ypos = imax(MOUINFO->ymin, imin(MOUINFO->ymax, y)); GrMouseUpdateCursor(); point.x = MOUINFO->xpos; point.y = MOUINFO->ypos; ClientToScreen(hGRXWnd, &point); SetCursorPos(point.x, point.y); }
This works correctly when GRX is in a window and also when GRX is full screen.