[Scummvm-cvs-logs] SF.net SVN: scummvm: [27057] scummvm/trunk/engines/agi/predictive.cpp
knakos at users.sourceforge.net
knakos at users.sourceforge.net
Sat Jun 2 21:56:19 CEST 2007
Revision: 27057
http://scummvm.svn.sourceforge.net/scummvm/?rev=27057&view=rev
Author: knakos
Date: 2007-06-02 12:56:18 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
better handle mode changes and command line length
Modified Paths:
--------------
scummvm/trunk/engines/agi/predictive.cpp
Modified: scummvm/trunk/engines/agi/predictive.cpp
===================================================================
--- scummvm/trunk/engines/agi/predictive.cpp 2007-06-02 19:32:57 UTC (rev 27056)
+++ scummvm/trunk/engines/agi/predictive.cpp 2007-06-02 19:56:18 UTC (rev 27057)
@@ -273,6 +273,7 @@
prefix += temp;
prefix += " ";
_currentCode.clear();
+ _currentWord.clear();
memset(repeatcount, 0, MAXWORDLEN);
break;
} if (active < 9 || active == 11 || active == 15) { // number or backspace
@@ -284,10 +285,12 @@
if (prefix.size())
prefix.deleteLastChar();
}
- } else if (active == 15) { // zero
- _currentCode += buttonStr[9];
- } else {
- _currentCode += buttonStr[active];
+ } else if (prefix.size() + _currentCode.size() < MAXWORDLEN - 1) { // don't overflow the dialog line
+ if (active == 15) { // zero
+ _currentCode += buttonStr[9];
+ } else {
+ _currentCode += buttonStr[active];
+ }
}
switch (mode) {
@@ -334,6 +337,14 @@
mode++;
if (mode > kModeAbc)
mode = kModePre;
+
+ // truncate current input at mode change
+ strncpy(temp, _currentWord.c_str(), _currentCode.size());
+ temp[_currentCode.size()] = 0;
+ prefix += temp;
+ _currentCode.clear();
+ _currentWord.clear();
+ memset(repeatcount, 0, MAXWORDLEN);
} else {
goto press;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list