Fix IsMouseButtonReleased()
when press/release events come too fast (#1032)
If press/release events for a mouse button come too fast, then using `IsMouseButtonReleased()` does not work. This has been noticed when using a touchpad on Linux when tapping with two fingers two emulate right mouse button click. The situation looks like this: ``` BeginDrawing <-- current==released, previous==released Pressed <-- current=pressed Released <-- current=released IsMouseButtonReleased <-- returns false because current==previous EndDrawing <-- previous=released ``` The fix is to update the previous mouse button state in addition to current mouse button state when `MouseButtonCallback()` is called by glfw. Now the situation is as follows: ``` BeginDrawing <-- current==released, previous==released Pressed <-- current=pressed, previous=released Released <-- current=released, previous=pressed IsMouseButtonReleased <-- returns true because current!=previous EndDrawing <-- previous=released ```
This commit is contained in:
parent
1b7d136daa
commit
8a08a9b225
1 changed files with 1 additions and 0 deletions
|
@ -3907,6 +3907,7 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i
|
||||||
// GLFW3 Mouse Button Callback, runs on mouse button pressed
|
// GLFW3 Mouse Button Callback, runs on mouse button pressed
|
||||||
static void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods)
|
static void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods)
|
||||||
{
|
{
|
||||||
|
previousMouseState[button] = currentMouseState[button];
|
||||||
currentMouseState[button] = action;
|
currentMouseState[button] = action;
|
||||||
|
|
||||||
#if defined(SUPPORT_GESTURES_SYSTEM) && defined(SUPPORT_MOUSE_GESTURES)
|
#if defined(SUPPORT_GESTURES_SYSTEM) && defined(SUPPORT_MOUSE_GESTURES)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue