r1130 - in trunk/code: client q3_ui
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu Aug 23 11:22:36 EDT 2007
Author: tma
Date: 2007-08-23 11:22:35 -0400 (Thu, 23 Aug 2007)
New Revision: 1130
Modified:
trunk/code/client/cl_keys.c
trunk/code/q3_ui/ui_servers2.c
Log:
* (bug 3324) Incorrect use of sizeof (beast <info at dbwatersports.com>)
* (bug 2946) Console scrolling broken (identified by misantropia)
+ Field_VariableSizeDraw contained a hack to ensure the cursor was always
visible. Unfortunately this interfered with scrolling long lines. Move the
hack to a different place
+ Removed commented code in the same function
+ Reworked Field_KeyDownEvent to use a switch( ... ) and set edit->scroll in
every case, thereby avoiding scrolling issues when "Home" or "End" are
pressed
Modified: trunk/code/client/cl_keys.c
===================================================================
--- trunk/code/client/cl_keys.c 2007-08-23 00:22:20 UTC (rev 1129)
+++ trunk/code/client/cl_keys.c 2007-08-23 15:22:35 UTC (rev 1130)
@@ -306,7 +306,7 @@
Field_Draw
Handles horizontal scrolling and cursor blinking
-x, y, amd width are in pixels
+x, y, and width are in pixels
===================
*/
void Field_VariableSizeDraw( field_t *edit, int x, int y, int width, int size, qboolean showCursor ) {
@@ -317,8 +317,8 @@
char str[MAX_STRING_CHARS];
int i;
- drawLen = edit->widthInChars;
- len = strlen( edit->buffer ) + 1;
+ drawLen = edit->widthInChars - 1; // - 1 so there is always a space for the cursor
+ len = strlen( edit->buffer );
// guarantee that cursor will be visible
if ( len <= drawLen ) {
@@ -331,14 +331,6 @@
}
}
prestep = edit->scroll;
-
-/*
- if ( edit->cursor < len - drawLen ) {
- prestep = edit->cursor; // cursor at start
- } else {
- prestep = len - drawLen;
- }
-*/
}
if ( prestep + drawLen > len ) {
@@ -379,7 +371,7 @@
cursorChar = 10;
}
- i = drawLen - ( Q_PrintStrlen( str ) + 1 );
+ i = drawLen - Q_PrintStrlen( str );
if ( size == SMALLCHAR_WIDTH ) {
SCR_DrawSmallChar( x + ( edit->cursor - prestep - i ) * size, y, cursorChar );
@@ -444,54 +436,50 @@
return;
}
+ key = tolower( key );
len = strlen( edit->buffer );
- if ( key == K_DEL ) {
- if ( edit->cursor < len ) {
- memmove( edit->buffer + edit->cursor,
- edit->buffer + edit->cursor + 1, len - edit->cursor );
- }
- return;
- }
+ switch ( key ) {
+ case K_DEL:
+ if ( edit->cursor < len ) {
+ memmove( edit->buffer + edit->cursor,
+ edit->buffer + edit->cursor + 1, len - edit->cursor );
+ }
+ break;
- if ( key == K_RIGHTARROW )
- {
- if ( edit->cursor < len ) {
- edit->cursor++;
- }
+ case K_RIGHTARROW:
+ if ( edit->cursor < len ) {
+ edit->cursor++;
+ }
+ break;
- if ( edit->cursor >= edit->scroll + edit->widthInChars && edit->cursor <= len )
- {
- edit->scroll++;
- }
- return;
- }
+ case K_LEFTARROW:
+ if ( edit->cursor > 0 ) {
+ edit->cursor--;
+ }
+ break;
- if ( key == K_LEFTARROW )
- {
- if ( edit->cursor > 0 ) {
- edit->cursor--;
- }
- if ( edit->cursor < edit->scroll )
- {
- edit->scroll--;
- }
- return;
- }
+ case K_HOME:
+ edit->cursor = 0;
+ break;
- if ( key == K_HOME || ( tolower(key) == 'a' && keys[K_CTRL].down ) ) {
- edit->cursor = 0;
- return;
- }
+ case K_END:
+ edit->cursor = len;
+ break;
- if ( key == K_END || ( tolower(key) == 'e' && keys[K_CTRL].down ) ) {
- edit->cursor = len;
- return;
+ case K_INS:
+ key_overstrikeMode = !key_overstrikeMode;
+ break;
+
+ default:
+ break;
}
- if ( key == K_INS ) {
- key_overstrikeMode = !key_overstrikeMode;
- return;
+ // Change scroll is cursor if no longer visible
+ if ( edit->cursor < edit->scroll ) {
+ edit->scroll = edit->cursor;
+ } else if ( edit->cursor >= edit->scroll + edit->widthInChars && edit->cursor <= len ) {
+ edit->scroll = edit->cursor - edit->widthInChars + 1;
}
}
Modified: trunk/code/q3_ui/ui_servers2.c
===================================================================
--- trunk/code/q3_ui/ui_servers2.c 2007-08-23 00:22:20 UTC (rev 1129)
+++ trunk/code/q3_ui/ui_servers2.c 2007-08-23 15:22:35 UTC (rev 1130)
@@ -568,34 +568,37 @@
// find address in master list
for (i=0; i<g_arenaservers.numfavoriteaddresses; i++)
+ {
if (!Q_stricmp(g_arenaservers.favoriteaddresses[i],servernodeptr->adrstr))
- break;
-
- // delete address from master list
- if (i <= g_arenaservers.numfavoriteaddresses-1)
- {
- if (i < g_arenaservers.numfavoriteaddresses-1)
{
- // shift items up
- memcpy( &g_arenaservers.favoriteaddresses[i], &g_arenaservers.favoriteaddresses[i+1], (g_arenaservers.numfavoriteaddresses - i - 1)*sizeof(MAX_ADDRESSLENGTH));
+ // delete address from master list
+ if (i < g_arenaservers.numfavoriteaddresses-1)
+ {
+ // shift items up
+ memcpy( &g_arenaservers.favoriteaddresses[i], &g_arenaservers.favoriteaddresses[i+1], (g_arenaservers.numfavoriteaddresses - i - 1)* MAX_ADDRESSLENGTH );
+ }
+ g_arenaservers.numfavoriteaddresses--;
+ memset( &g_arenaservers.favoriteaddresses[g_arenaservers.numfavoriteaddresses], 0, MAX_ADDRESSLENGTH );
+ break;
}
- g_arenaservers.numfavoriteaddresses--;
}
// find address in server list
for (i=0; i<g_numfavoriteservers; i++)
+ {
if (&g_favoriteserverlist[i] == servernodeptr)
- break;
+ {
- // delete address from server list
- if (i <= g_numfavoriteservers-1)
- {
- if (i < g_numfavoriteservers-1)
- {
- // shift items up
- memcpy( &g_favoriteserverlist[i], &g_favoriteserverlist[i+1], (g_numfavoriteservers - i - 1)*sizeof(servernode_t));
+ // delete address from server list
+ if (i < g_numfavoriteservers-1)
+ {
+ // shift items up
+ memcpy( &g_favoriteserverlist[i], &g_favoriteserverlist[i+1], (g_numfavoriteservers - i - 1)*sizeof(servernode_t));
+ }
+ g_numfavoriteservers--;
+ memset( &g_favoriteserverlist[ g_numfavoriteservers ], 0, sizeof(servernode_t));
+ break;
}
- g_numfavoriteservers--;
}
g_arenaservers.numqueriedservers = g_arenaservers.numfavoriteaddresses;
More information about the quake3-commits
mailing list