diff --git a/client/include/app.h b/client/include/app.h index 68089df0..5e245239 100644 --- a/client/include/app.h +++ b/client/include/app.h @@ -84,6 +84,7 @@ void app_glSwapBuffers(void); #define MAX_OVERLAY_RECTS 10 void app_registerOverlay(const struct LG_OverlayOps * ops, void * params); +void app_setOverlay(bool enable); /** * render the overlay diff --git a/client/src/app.c b/client/src/app.c index 623dd916..2445249f 100644 --- a/client/src/app.c +++ b/client/src/app.c @@ -313,7 +313,10 @@ void app_handleKeyPress(int sc) if (g_state.overlayInput) { - g_state.io->KeysDown[sc] = true; + if (sc == KEY_ESC) + app_setOverlay(false); + else + g_state.io->KeysDown[sc] = true; return; } @@ -797,3 +800,24 @@ void app_freeOverlays(void) free(overlay); } } + +void app_setOverlay(bool enable) +{ + if (g_state.overlayInput == enable) + return; + + g_state.overlayInput = enable; + g_state.cursorLast = -2; + + if (g_state.overlayInput) + { + g_state.io->ConfigFlags &= ~ImGuiConfigFlags_NoMouse; + core_setGrabQuiet(false); + core_setCursorInView(false); + } + else + { + g_state.io->ConfigFlags |= ImGuiConfigFlags_NoMouse; + core_resetOverlayInputState(); + } +} diff --git a/client/src/keybind.c b/client/src/keybind.c index 94831b31..282d47bc 100644 --- a/client/src/keybind.c +++ b/client/src/keybind.c @@ -135,16 +135,7 @@ static void bind_passthrough(int sc, void * opaque) static void bind_toggleOverlay(int sc, void * opaque) { - g_state.overlayInput ^= true; - g_state.cursorLast = -2; - if (g_state.overlayInput) - { - g_state.io->ConfigFlags &= ~ImGuiConfigFlags_NoMouse; - core_setGrabQuiet(false); - core_setCursorInView(false); - } - else - g_state.io->ConfigFlags |= ImGuiConfigFlags_NoMouse; + app_setOverlay(!g_state.overlayInput); } void keybind_register(void)