--- code/client/cl_keys.c 2006-12-03 06:32:11.000000000 +0100 +++ code/client/cl_keys.c.new 2006-12-03 06:33:22.000000000 +0100 @@ -202,7 +202,6 @@ int prestep; int cursorChar; char str[MAX_STRING_CHARS]; - int i; drawLen = edit->widthInChars; len = strlen( edit->buffer ) + 1; @@ -266,15 +265,19 @@ cursorChar = 10; } - i = drawLen - ( Q_PrintStrlen( str ) + 1 ); + // 061203 mis -- fix the cursor placement error that + // occurs after the text has scrolled (character zero + // becomes unreachable). + if ( edit->cursor ) { + x += ( edit->cursor - prestep - ( drawLen - ( Q_PrintStrlen( str ) + 1 ) ) ) * size; + } if ( size == SMALLCHAR_WIDTH ) { - SCR_DrawSmallChar( x + ( edit->cursor - prestep - i ) * size, y, cursorChar ); + SCR_DrawSmallChar( x, y, cursorChar ); } else { str[0] = cursorChar; str[1] = 0; - SCR_DrawBigString( x + ( edit->cursor - prestep - i ) * size, y, str, 1.0 ); - + SCR_DrawBigString( x, y, str, 1.0 ); } }