Changeset - r18632:1741a73d3bc6
[Not reviewed]
master
0 1 0
yexo - 13 years ago 2011-12-11 11:37:03
yexo@openttd.org
(svn r23489) -Change: don't wrap around the console history and give an empty line if you click the down-key enough
1 file changed with 9 insertions and 19 deletions:
0 comments (0 inline, 0 general)
src/console_gui.cpp
Show inline comments
 
@@ -126,7 +126,7 @@ struct IConsoleLine {
 
/* ** main console cmd buffer ** */
 
static Textbuf _iconsole_cmdline;
 
static char *_iconsole_history[ICON_HISTORY_SIZE];
 
static byte _iconsole_historypos;
 
static int _iconsole_historypos;
 
IConsoleModes _iconsole_mode;
 

	
 
/* *************** *
 
@@ -145,7 +145,7 @@ static void IConsoleClearCommand()
 

	
 
static inline void IConsoleResetHistoryPos()
 
{
 
	_iconsole_historypos = ICON_HISTORY_SIZE - 1;
 
	_iconsole_historypos = -1;
 
}
 

	
 

	
 
@@ -353,7 +353,7 @@ int IConsoleWindow::scroll = 0;
 

	
 
void IConsoleGUIInit()
 
{
 
	_iconsole_historypos = ICON_HISTORY_SIZE - 1;
 
	IConsoleResetHistoryPos();
 
	_iconsole_mode = ICONSOLE_CLOSED;
 

	
 
	IConsoleLine::Reset();
 
@@ -454,25 +454,15 @@ static const char *IConsoleHistoryAdd(co
 
static void IConsoleHistoryNavigate(int direction)
 
{
 
	if (_iconsole_history[0] == NULL) return; // Empty history
 
	int i = _iconsole_historypos + direction;
 
	_iconsole_historypos = Clamp(_iconsole_historypos + direction, -1, ICON_HISTORY_SIZE - 1);
 

	
 
	/* watch out for overflows, just wrap around */
 
	if (i < 0) i = ICON_HISTORY_SIZE - 1;
 
	if ((uint)i >= ICON_HISTORY_SIZE) i = 0;
 

	
 
	if (direction > 0) {
 
		if (_iconsole_history[i] == NULL) i = 0;
 
	}
 
	if (direction > 0 && _iconsole_history[_iconsole_historypos] == NULL) _iconsole_historypos--;
 

	
 
	if (direction < 0) {
 
		while (i > 0 && _iconsole_history[i] == NULL) i--;
 
	if (_iconsole_historypos == -1) {
 
		*_iconsole_cmdline.buf = '\0';
 
	} else {
 
		ttd_strlcpy(_iconsole_cmdline.buf, _iconsole_history[_iconsole_historypos], _iconsole_cmdline.max_bytes);
 
	}
 

	
 
	_iconsole_historypos = i;
 
	IConsoleClearCommand();
 
	/* copy history to 'command prompt / bash' */
 
	assert(_iconsole_history[i] != NULL && IsInsideMM(i, 0, ICON_HISTORY_SIZE));
 
	ttd_strlcpy(_iconsole_cmdline.buf, _iconsole_history[i], _iconsole_cmdline.max_bytes);
 
	UpdateTextBufferSize(&_iconsole_cmdline);
 
}
 

	
0 comments (0 inline, 0 general)