mirror of
https://github.com/glfw/glfw.git
synced 2024-11-26 06:14:35 +00:00
Win32: Fix cursor enter/position event order
This fixes the cursor enter event being emitted after the first cursor
position event on Windows.
Closes #1490.
(cherry picked from commit 4f0b8b0dda
)
This commit is contained in:
parent
ce7cd3e288
commit
9fc035a562
@ -122,6 +122,7 @@ information on what to include when reporting a bug.
|
|||||||
relocatable (#1470)
|
relocatable (#1470)
|
||||||
- [Win32] Bugfix: `GLFW_INCLUDE_VULKAN` plus `VK_USE_PLATFORM_WIN32_KHR` caused
|
- [Win32] Bugfix: `GLFW_INCLUDE_VULKAN` plus `VK_USE_PLATFORM_WIN32_KHR` caused
|
||||||
symbol redefinition (#1524)
|
symbol redefinition (#1524)
|
||||||
|
- [Win32] Bugfix: Invoke cursor enter callback before cursor position callback
|
||||||
- [X11] Bugfix: The CMake files did not check for the XInput headers (#1480)
|
- [X11] Bugfix: The CMake files did not check for the XInput headers (#1480)
|
||||||
- [X11] Bugfix: Key names were not updated when the keyboard layout changed
|
- [X11] Bugfix: Key names were not updated when the keyboard layout changed
|
||||||
(#1462,#1528)
|
(#1462,#1528)
|
||||||
@ -225,6 +226,7 @@ skills.
|
|||||||
- Glenn Lewis
|
- Glenn Lewis
|
||||||
- Shane Liesegang
|
- Shane Liesegang
|
||||||
- Anders Lindqvist
|
- Anders Lindqvist
|
||||||
|
- Leon Linhart
|
||||||
- Eyal Lotem
|
- Eyal Lotem
|
||||||
- Aaron Loucks
|
- Aaron Loucks
|
||||||
- Luflosi
|
- Luflosi
|
||||||
|
@ -828,6 +828,19 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
|||||||
const int x = GET_X_LPARAM(lParam);
|
const int x = GET_X_LPARAM(lParam);
|
||||||
const int y = GET_Y_LPARAM(lParam);
|
const int y = GET_Y_LPARAM(lParam);
|
||||||
|
|
||||||
|
if (!window->win32.cursorTracked)
|
||||||
|
{
|
||||||
|
TRACKMOUSEEVENT tme;
|
||||||
|
ZeroMemory(&tme, sizeof(tme));
|
||||||
|
tme.cbSize = sizeof(tme);
|
||||||
|
tme.dwFlags = TME_LEAVE;
|
||||||
|
tme.hwndTrack = window->win32.handle;
|
||||||
|
TrackMouseEvent(&tme);
|
||||||
|
|
||||||
|
window->win32.cursorTracked = GLFW_TRUE;
|
||||||
|
_glfwInputCursorEnter(window, GLFW_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
if (window->cursorMode == GLFW_CURSOR_DISABLED)
|
if (window->cursorMode == GLFW_CURSOR_DISABLED)
|
||||||
{
|
{
|
||||||
const int dx = x - window->win32.lastCursorPosX;
|
const int dx = x - window->win32.lastCursorPosX;
|
||||||
@ -848,19 +861,6 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
|
|||||||
window->win32.lastCursorPosX = x;
|
window->win32.lastCursorPosX = x;
|
||||||
window->win32.lastCursorPosY = y;
|
window->win32.lastCursorPosY = y;
|
||||||
|
|
||||||
if (!window->win32.cursorTracked)
|
|
||||||
{
|
|
||||||
TRACKMOUSEEVENT tme;
|
|
||||||
ZeroMemory(&tme, sizeof(tme));
|
|
||||||
tme.cbSize = sizeof(tme);
|
|
||||||
tme.dwFlags = TME_LEAVE;
|
|
||||||
tme.hwndTrack = window->win32.handle;
|
|
||||||
TrackMouseEvent(&tme);
|
|
||||||
|
|
||||||
window->win32.cursorTracked = GLFW_TRUE;
|
|
||||||
_glfwInputCursorEnter(window, GLFW_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user