From 1a0193ad3aad345ac1286a51522186da2e69d0a0 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Tue, 29 Sep 2020 14:24:21 +0200 Subject: [PATCH] Menu: Add input redirection verification in case we've forcefully changed menu input modes. --- src/menu-fn/entry.cpp | 15 ++++++++++++--- src/menu-vgui/main.cpp | 17 +++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/menu-fn/entry.cpp b/src/menu-fn/entry.cpp index 70860919..1ae3baa7 100644 --- a/src/menu-fn/entry.cpp +++ b/src/menu-fn/entry.cpp @@ -184,16 +184,25 @@ m_draw(vector screensize) g_background = cvar("_background"); + /* make sure input carries over when a map background is active */ if (g_background) { - setkeydest(KEY_MENU); - setmousetarget(TARGET_MENU); - setcursormode(TRUE, "gfx/cursor"); + if (getkeydest() != KEY_MENU) { + setkeydest(KEY_MENU); + setmousetarget(TARGET_MENU); + setcursormode(TRUE, "gfx/cursor"); + } } /* to prevent TCP timeouts */ menu_chatrooms_keepalive(); if (!g_active && !g_background) { + /* make sure we're redirecting input when the background's gone */ + if (getkeydest() != KEY_GAME) { + setkeydest(KEY_GAME); + setmousetarget(TARGET_CLIENT); + setcursormode(FALSE); + } return; } diff --git a/src/menu-vgui/main.cpp b/src/menu-vgui/main.cpp index 75879fec..92cd8bdd 100755 --- a/src/menu-vgui/main.cpp +++ b/src/menu-vgui/main.cpp @@ -65,13 +65,22 @@ void m_draw ( vector vecScreensize ) g_background = cvar("_background"); + /* make sure input carries over when a map background is active */ if (g_background) { - setkeydest(KEY_MENU); - setmousetarget(TARGET_MENU); - setcursormode(TRUE, "gfx/cursor"); + if (getkeydest() != KEY_MENU) { + setkeydest(KEY_MENU); + setmousetarget(TARGET_MENU); + setcursormode(TRUE, "gfx/cursor"); + } } - if ( !g_iMenuActive && !g_background ) { + if (!g_iMenuActive && !g_background) { + /* make sure we're redirecting input when the background's gone */ + if (getkeydest() != KEY_GAME) { + setkeydest(KEY_GAME); + setmousetarget(TARGET_CLIENT); + setcursormode(FALSE); + } return; }