mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2025-02-13 07:11:06 +00:00
A temporary fix to console keys' behavior. Backspace, leftarrow and rightarrow work now.
This commit is contained in:
parent
fb35a3f7c0
commit
931e8f2f47
1 changed files with 36 additions and 4 deletions
|
@ -246,9 +246,9 @@ Interactive line editing and console scrollback
|
|||
*/
|
||||
void Key_Console (int key)
|
||||
{
|
||||
int i;
|
||||
#ifdef _WIN32
|
||||
char *cmd, *s;
|
||||
int i;
|
||||
HANDLE th;
|
||||
char *clipText, *textCopied;
|
||||
#endif
|
||||
|
@ -272,6 +272,7 @@ void Key_Console (int key)
|
|||
edit_line = (edit_line + 1) & 31;
|
||||
history_line = edit_line;
|
||||
key_lines[edit_line][0] = ']';
|
||||
key_lines[edit_line][1] = 0;
|
||||
key_linepos = 1;
|
||||
if (cls.state == ca_disconnected)
|
||||
SCR_UpdateScreen (); // force an update, because the command
|
||||
|
@ -285,12 +286,36 @@ void Key_Console (int key)
|
|||
break;
|
||||
|
||||
case K_BACKSPACE:
|
||||
if (key_linepos > 1)
|
||||
{
|
||||
strcpy(key_lines[edit_line] + key_linepos - 1, key_lines[edit_line] + key_linepos);
|
||||
key_linepos--;
|
||||
}
|
||||
return;
|
||||
break;
|
||||
|
||||
case KP_RIGHTARROW:
|
||||
case K_RIGHTARROW:
|
||||
if (strlen(key_lines[edit_line]) == key_linepos)
|
||||
{
|
||||
if (strlen(key_lines[(edit_line + 31) & 31]) <= key_linepos)
|
||||
return; // no character to get
|
||||
key_lines[edit_line][key_linepos] = key_lines[(edit_line + 31) & 31][key_linepos];
|
||||
key_linepos++;
|
||||
key_lines[edit_line][key_linepos] = 0;
|
||||
}
|
||||
else
|
||||
key_linepos++;
|
||||
return;
|
||||
break;
|
||||
|
||||
case KP_LEFTARROW:
|
||||
case K_LEFTARROW:
|
||||
if (key_linepos > 1)
|
||||
key_linepos--;
|
||||
return;
|
||||
break;
|
||||
|
||||
case KP_UPARROW:
|
||||
case K_UPARROW:
|
||||
do {
|
||||
|
@ -382,8 +407,15 @@ void Key_Console (int key)
|
|||
|
||||
if (key_linepos < MAXCMDLINE-1)
|
||||
{
|
||||
// Tonik -->
|
||||
i = strlen(key_lines[edit_line]) - 1;
|
||||
if (i == MAXCMDLINE-2) i--;
|
||||
for (; i >= key_linepos; i--)
|
||||
key_lines[edit_line][i + 1] = key_lines[edit_line][i];
|
||||
// <-- Tonik
|
||||
key_lines[edit_line][key_linepos] = key;
|
||||
key_linepos++;
|
||||
if (!i) // FIXME
|
||||
key_lines[edit_line][key_linepos] = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue