From: fgsfds Date: Wed, 1 May 2019 17:21:21 +0000 (+0300) Subject: worked around some bugs related to binds and input focus X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=commitdiff_plain;h=4f08d1293d9a8d5814ec24b45be088d04247f5c8;hp=5ec745243230db4b74820b894755e9f1eab0da4c worked around some bugs related to binds and input focus --- diff --git a/src/game/g_console.pas b/src/game/g_console.pas index 9a2bd99..6757bfc 100644 --- a/src/game/g_console.pas +++ b/src/game/g_console.pas @@ -1727,11 +1727,17 @@ end; procedure g_Console_ProcessBind (key: Integer; down: Boolean); var i: Integer; begin - if (not g_GUIGrabInput) and (not gChatShow) and (key >= 0) and (key < e_MaxInputKeys) and ((gInputBinds[key].down <> nil) or (gInputBinds[key].up <> nil)) then + if (key >= 0) and (key < e_MaxInputKeys) and ((gInputBinds[key].down <> nil) or (gInputBinds[key].up <> nil)) then begin + // down binds shouldn't be processed when there's no input focus + // however when the user releases a button the bind should still be processed + // to avoid "sticky" buttons if down then - for i := 0 to High(gInputBinds[key].down) do - g_Console_Process(gInputBinds[key].down[i], True) + begin + if (not g_GUIGrabInput) and (not gChatShow) and (not gConsoleShow) then + for i := 0 to High(gInputBinds[key].down) do + g_Console_Process(gInputBinds[key].down[i], True); + end else for i := 0 to High(gInputBinds[key].up) do g_Console_Process(gInputBinds[key].up[i], True)