From 7ed2e65b77daeff156b7bae5fc4d85e35e10bbb9 Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 25 Dec 2009 19:17:36 +0000 Subject: [PATCH] (svn r18631) -Fix [FS#3419]: when making a screenshot from the console the currently executed command would be shown twice --- src/console_gui.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/console_gui.cpp b/src/console_gui.cpp index c156e76c8d..746e83ca34 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -145,7 +145,7 @@ static void IConsoleClearCommand() static inline void IConsoleResetHistoryPos() {_iconsole_historypos = ICON_HISTORY_SIZE - 1;} -static void IConsoleHistoryAdd(const char *cmd); +static const char *IConsoleHistoryAdd(const char *cmd); static void IConsoleHistoryNavigate(int direction); /** Widgets of the console window. */ @@ -279,13 +279,13 @@ struct IConsoleWindow : Window IConsoleSwitch(); break; - case WKC_RETURN: case WKC_NUM_ENTER: + case WKC_RETURN: case WKC_NUM_ENTER: { IConsolePrintF(CC_COMMAND, "] %s", _iconsole_cmdline.buf); - IConsoleHistoryAdd(_iconsole_cmdline.buf); - - IConsoleCmdExec(_iconsole_cmdline.buf); + const char *cmd = IConsoleHistoryAdd(_iconsole_cmdline.buf); IConsoleClearCommand(); - break; + + if (cmd != NULL) IConsoleCmdExec(cmd); + } break; case WKC_CTRL | WKC_RETURN: _iconsole_mode = (_iconsole_mode == ICONSOLE_FULL) ? ICONSOLE_OPENED : ICONSOLE_FULL; @@ -412,14 +412,15 @@ void IConsoleClose() {if (_iconsole_mode == ICONSOLE_OPENED) IConsoleSwitch();} * Add the entered line into the history so you can look it back * scroll, etc. Put it to the beginning as it is the latest text * @param cmd Text to be entered into the 'history' + * @return the command to execute */ -static void IConsoleHistoryAdd(const char *cmd) +static const char *IConsoleHistoryAdd(const char *cmd) { /* Strip all spaces at the begin */ while (IsWhitespace(*cmd)) cmd++; /* Do not put empty command in history */ - if (StrEmpty(cmd)) return; + if (StrEmpty(cmd)) return NULL; /* Do not put in history if command is same as previous */ if (_iconsole_history[0] == NULL || strcmp(_iconsole_history[0], cmd) != 0) { @@ -430,6 +431,7 @@ static void IConsoleHistoryAdd(const char *cmd) /* Reset the history position */ IConsoleResetHistoryPos(); + return _iconsole_history[0]; } /**