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.