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

Decouple Win32 cursor setting and tracking

This commit is contained in:
Camilla Berglund 2015-07-07 12:02:10 +02:00
parent 527952102a
commit 0a1225d0df

View File

@ -1190,19 +1190,24 @@ void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
void _glfwPlatformSetCursor(_GLFWwindow* window, _GLFWcursor* cursor) void _glfwPlatformSetCursor(_GLFWwindow* window, _GLFWcursor* cursor)
{ {
// It should be guaranteed that the cursor is not being used by this window if POINT pos;
// the following condition is not met. That way it should be safe to destroy the
// cursor after calling glfwSetCursor(window, NULL) on all windows using the cursor.
if (_glfw.cursorWindow == window && if (_glfw.cursorWindow != window)
window->cursorMode == GLFW_CURSOR_NORMAL && return;
window->win32.cursorTracked)
{ if (window->cursorMode != GLFW_CURSOR_NORMAL)
if (cursor) return;
SetCursor(cursor->win32.handle);
else if (!GetCursorPos(&pos))
SetCursor(LoadCursorW(NULL, IDC_ARROW)); return;
}
if (WindowFromPoint(pos) != window->win32.handle)
return;
if (cursor)
SetCursor(cursor->win32.handle);
else
SetCursor(LoadCursorW(NULL, IDC_ARROW));
} }
void _glfwPlatformSetClipboardString(_GLFWwindow* window, const char* string) void _glfwPlatformSetClipboardString(_GLFWwindow* window, const char* string)