From b6eb929383faa5383fcae87df9eb0606a2b264c0 Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Tue, 27 Aug 2019 21:15:58 +0200 Subject: [PATCH] Should fix the cursor until we draw our own cursor. --- overlay_experimental/steam_overlay.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/overlay_experimental/steam_overlay.cpp b/overlay_experimental/steam_overlay.cpp index 596f5eb7..282da5f5 100644 --- a/overlay_experimental/steam_overlay.cpp +++ b/overlay_experimental/steam_overlay.cpp @@ -121,12 +121,12 @@ bool Steam_Overlay::ShowOverlay() const void Steam_Overlay::ShowOverlay(bool state) { static RECT old_clip; + static BOOL show_cursor = FALSE; if (!Ready() || show_overlay == state) return; - show_overlay = state; - if (show_overlay) + if (state) { HWND game_hwnd = Windows_Hook::Inst()->GetGameHwnd(); RECT cliRect, wndRect, clipRect; @@ -154,13 +154,27 @@ void Steam_Overlay::ShowOverlay(bool state) clipRect.bottom -= borderWidth; ClipCursor(&clipRect); - ImGui::GetIO().MouseDrawCursor = true; + + CURSORINFO cinfo; + cinfo.cbSize = sizeof(cinfo); + GetCursorInfo(&cinfo); + show_cursor = cinfo.flags == CURSOR_SHOWING; + + POINT pos; + pos.x = cliRect.right/2; + pos.y = cliRect.bottom/2; + ClientToScreen(game_hwnd, &pos); + SetCursorPos(pos.x, pos.y); + while (ShowCursor(TRUE) < 0); } else { ClipCursor(&old_clip); - ImGui::GetIO().MouseDrawCursor = false; + if (!show_cursor) + while (ShowCursor(FALSE) >= 0); } + show_overlay = state; + overlay_state_changed = true; }