Added tracking of cursor visibility.

master
Camilla Berglund ago%!(EXTRA string=12 years)
parent 608109c249
commit 6164eb603b
  1. 1
      src/win32_platform.h
  2. 23
      src/win32_window.c

@ -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…
Cancel
Save