[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