mirror of
https://github.com/glfw/glfw.git
synced 2024-11-26 20:11:58 +00:00
Added tracking of cursor visibility.
This commit is contained in:
parent
608109c249
commit
6164eb603b
@ -154,6 +154,7 @@ typedef struct _GLFWwindowWin32
|
||||
// Various platform specific internal variables
|
||||
GLboolean cursorCentered;
|
||||
GLboolean cursorInside;
|
||||
GLboolean cursorHidden;
|
||||
int oldCursorX, oldCursorY;
|
||||
} _GLFWwindowWin32;
|
||||
|
||||
|
@ -54,20 +54,30 @@ static void hideCursor(_GLFWwindow* window)
|
||||
|
||||
ReleaseCapture();
|
||||
ClipCursor(NULL);
|
||||
ShowCursor(TRUE);
|
||||
|
||||
if (window->win32.cursorHidden)
|
||||
{
|
||||
ShowCursor(TRUE);
|
||||
window->win32.cursorHidden = GL_FALSE;
|
||||
}
|
||||
|
||||
if (GetCursorPos(&pos))
|
||||
{
|
||||
if (WindowFromPoint(pos) == window->win32.handle)
|
||||
SetCursor(NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Capture mouse cursor
|
||||
//
|
||||
static void captureCursor(_GLFWwindow* window)
|
||||
{
|
||||
ShowCursor(FALSE);
|
||||
if (!window->win32.cursorHidden)
|
||||
{
|
||||
ShowCursor(FALSE);
|
||||
window->win32.cursorHidden = GL_TRUE;
|
||||
}
|
||||
|
||||
updateClipRect(window);
|
||||
SetCapture(window->win32.handle);
|
||||
}
|
||||
@ -80,7 +90,12 @@ static void showCursor(_GLFWwindow* window)
|
||||
|
||||
ReleaseCapture();
|
||||
ClipCursor(NULL);
|
||||
ShowCursor(TRUE);
|
||||
|
||||
if (window->win32.cursorHidden)
|
||||
{
|
||||
ShowCursor(TRUE);
|
||||
window->win32.cursorHidden = GL_FALSE;
|
||||
}
|
||||
|
||||
if (GetCursorPos(&pos))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user