]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
keys: do not send the text event of the toggleconsole bind to the console.
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 29 Nov 2016 18:20:07 +0000 (18:20 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 29 Nov 2016 18:20:07 +0000 (18:20 +0000)
This only affects SDL2's event handling, which sends events in the following order:

(keycode, 0, true)
(0, charcode, true)
(0, charcode, false)
(keycode, 0, false)

The input destination is toggled on the first event, and the console then would
receive the charcode events. Binds work differently though - their action is
queued into the console buffer, and executed at the end of the frame!

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@12305 d7cf8633-e32d-0410-b094-e92efae38249

keys.c

diff --git a/keys.c b/keys.c
index 6022f6bbfe175880eb4b0ada5510eeb784c82daf..79d633ba3db7da87956272847bbbae11be31bef5 100644 (file)
--- a/keys.c
+++ b/keys.c
@@ -1917,7 +1917,7 @@ Key_Event (int key, int ascii, qboolean down)
        {
                if (down && con_closeontoggleconsole.integer && bind && !strncmp(bind, "toggleconsole", strlen("toggleconsole")) && ascii != STRING_COLOR_TAG)
                {
-                       Con_ToggleConsole_f ();
+                       Cbuf_AddText("toggleconsole\n");  // Deferred to next frame so we're not sending the text event to the console.
                        tbl_keydest[key] = key_void; // key release should go nowhere (especially not to key_menu or key_game)
                        return;
                }