1
0
Fork 0
mirror of https://github.com/gwm17/glfw.git synced 2024-11-30 05:58:52 -05:00

Fix Win32 custom cursor set for non-client area

Udating the cursor via glfwSetCursor incorrectly included the non-client
area of the window.
This commit is contained in:
Camilla Berglund 2016-03-07 12:30:15 +01:00
parent 5620895e88
commit fca5a8ab48

View File

@ -1319,6 +1319,7 @@ void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
void _glfwPlatformSetCursor(_GLFWwindow* window, _GLFWcursor* cursor) void _glfwPlatformSetCursor(_GLFWwindow* window, _GLFWcursor* cursor)
{ {
RECT area;
POINT pos; POINT pos;
if (_glfw.cursorWindow != window) if (_glfw.cursorWindow != window)
@ -1333,6 +1334,13 @@ void _glfwPlatformSetCursor(_GLFWwindow* window, _GLFWcursor* cursor)
if (WindowFromPoint(pos) != window->win32.handle) if (WindowFromPoint(pos) != window->win32.handle)
return; return;
GetClientRect(window->win32.handle, &area);
ClientToScreen(window->win32.handle, (POINT*) &area.left);
ClientToScreen(window->win32.handle, (POINT*) &area.right);
if (!PtInRect(&area, pos))
return;
if (cursor) if (cursor)
SetCursor(cursor->win32.handle); SetCursor(cursor->win32.handle);
else else