From 5bb8d080f51d55dfcec434ed20cf88500fc6c3ec Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Mon, 1 Dec 2025 16:46:38 -0500 Subject: [PATCH 1/2] Workaround for buggy mouse cursor with RDP --- Sources/OvWindowing/src/OvWindowing/Window.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Sources/OvWindowing/src/OvWindowing/Window.cpp b/Sources/OvWindowing/src/OvWindowing/Window.cpp index 10ff9e6fe..dbeb63d91 100644 --- a/Sources/OvWindowing/src/OvWindowing/Window.cpp +++ b/Sources/OvWindowing/src/OvWindowing/Window.cpp @@ -14,6 +14,10 @@ #include +#if defined(_WIN32) +#include +#endif + std::unordered_map OvWindowing::Window::__WINDOWS_MAP; OvWindowing::Window::Window(const Context::Device& p_device, const Settings::WindowSettings& p_windowSettings) : @@ -229,6 +233,14 @@ void OvWindowing::Window::SwapBuffers() void OvWindowing::Window::SetCursorMode(Cursor::ECursorMode p_cursorMode) { m_cursorMode = p_cursorMode; + +#if defined(_WIN32) + if (p_cursorMode == Cursor::ECursorMode::DISABLED && GetSystemMetrics(SM_REMOTESESSION)) + { + return; + } +#endif + glfwSetInputMode(m_glfwWindow, GLFW_CURSOR, static_cast(p_cursorMode)); } From c1b99e546626682f76013c330660f4705faeb4a9 Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Mon, 1 Dec 2025 16:59:47 -0500 Subject: [PATCH 2/2] Added more context --- Sources/OvWindowing/src/OvWindowing/Window.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/OvWindowing/src/OvWindowing/Window.cpp b/Sources/OvWindowing/src/OvWindowing/Window.cpp index dbeb63d91..4edbc1bb3 100644 --- a/Sources/OvWindowing/src/OvWindowing/Window.cpp +++ b/Sources/OvWindowing/src/OvWindowing/Window.cpp @@ -234,6 +234,10 @@ void OvWindowing::Window::SetCursorMode(Cursor::ECursorMode p_cursorMode) { m_cursorMode = p_cursorMode; + // Workaround to avoid mouse issues with RDP sessions on Windows. (https://github.com/glfw/glfw/issues/2463) + // This effectively disable the DISABLED cursor mode when in a remote session. + // This is far from ideal, but at least it prevents the mouse from going crazy, + // which keeps the application usable. #if defined(_WIN32) if (p_cursorMode == Cursor::ECursorMode::DISABLED && GetSystemMetrics(SM_REMOTESESSION)) {