Mercurial > hg > openttd
changeset 18642:c033dd088270 draft
(svn r23489) -Change: don't wrap around the console history and give an empty line if you click the down-key enough
author | yexo <yexo@openttd.org> |
---|---|
date | Sun, 11 Dec 2011 11:37:03 +0000 |
parents | 228730e55fb0 |
children | 8bdbe20d6e07 |
files | src/console_gui.cpp |
diffstat | 1 files changed, 9 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -126,7 +126,7 @@ /* ** 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 inline void IConsoleResetHistoryPos() { - _iconsole_historypos = ICON_HISTORY_SIZE - 1; + _iconsole_historypos = -1; } @@ -353,7 +353,7 @@ void IConsoleGUIInit() { - _iconsole_historypos = ICON_HISTORY_SIZE - 1; + IConsoleResetHistoryPos(); _iconsole_mode = ICONSOLE_CLOSED; IConsoleLine::Reset(); @@ -454,25 +454,15 @@ 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); }