mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01:00
mouse: Save initial position yet even if xrel and yrel are 0.
The X11 target sets mouse->last_x and last_y in EnterNotify and then calls SDL_SendMouseMotion(), which throws away the new position because it matches the mouse->last_x and last_y we just set, meaning that if the pointer is in the window when it created, SDL_GetMouseState() will report a position of 0,0 until a MotionNotify event (the pointer moves) arrives and corrects the mouse state. Mostly fixes Bugzilla #1612.
This commit is contained in:
parent
b38a5ba062
commit
cf092eca90
@ -381,19 +381,16 @@ SDL_PrivateSendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relativ
|
|||||||
yrel = y - mouse->last_y;
|
yrel = y - mouse->last_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Drop events that don't change state */
|
|
||||||
if (!xrel && !yrel) {
|
|
||||||
#ifdef DEBUG_MOUSE
|
|
||||||
printf("Mouse event didn't change state - dropped!\n");
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ignore relative motion when first positioning the mouse */
|
/* Ignore relative motion when first positioning the mouse */
|
||||||
if (!mouse->has_position) {
|
if (!mouse->has_position) {
|
||||||
xrel = 0;
|
xrel = 0;
|
||||||
yrel = 0;
|
yrel = 0;
|
||||||
mouse->has_position = SDL_TRUE;
|
mouse->has_position = SDL_TRUE;
|
||||||
|
} else if (!xrel && !yrel) { /* Drop events that don't change state */
|
||||||
|
#ifdef DEBUG_MOUSE
|
||||||
|
printf("Mouse event didn't change state - dropped!\n");
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ignore relative motion positioning the first touch */
|
/* Ignore relative motion positioning the first touch */
|
||||||
|
Loading…
Reference in New Issue
Block a user