[Scummvm-cvs-logs] SF.net SVN: scummvm: [27046] scummvm/trunk/engines/agi/predictive.cpp

knakos at users.sourceforge.net knakos at users.sourceforge.net
Sat Jun 2 08:53:52 CEST 2007


Revision: 27046
          http://scummvm.svn.sourceforge.net/scummvm/?rev=27046&view=rev
Author:   knakos
Date:     2007-06-01 23:53:52 -0700 (Fri, 01 Jun 2007)

Log Message:
-----------
kill misplaced cursor, refresh only when necessary, add some (cheap) visual feedback on keypress

Modified Paths:
--------------
    scummvm/trunk/engines/agi/predictive.cpp

Modified: scummvm/trunk/engines/agi/predictive.cpp
===================================================================
--- scummvm/trunk/engines/agi/predictive.cpp	2007-06-02 05:27:34 UTC (rev 27045)
+++ scummvm/trunk/engines/agi/predictive.cpp	2007-06-02 06:53:52 UTC (rev 27046)
@@ -110,7 +110,7 @@
 }
 
 bool AgiEngine::predictiveDialog(void) {
-	int key, active = 0;
+	int key = 0, active = -1, lastactive = -1;
 	bool rc = false;
 	int x;
 	int y;
@@ -158,8 +158,6 @@
 	_gfx->drawRectangle(62, 54, 249, 66, MSG_BOX_TEXT);
 	_gfx->flushBlock(62, 54, 249, 66);
 
-	_gfx->printCharacter(3, 11, _game.cursorChar, MSG_BOX_COLOUR, MSG_BOX_TEXT);
-
 	bx[15] = 73; // Zero/space
 	by[15] = 120;
 	bx[9] = 120; // next
@@ -234,6 +232,14 @@
 				printText(temp, 0, 8, 7, MAXWORDLEN, 15, 0);
 				_gfx->flushBlock(62, 54, 249, 66);
 			}
+
+			if (active >= 0 && key != 9) {
+				active = -1;
+				needRefresh = true;
+			} else
+				needRefresh = false;
+
+			_gfx->doUpdate();
 		}
 
 		_gfx->pollTimer();	/* msdos driver -> does nothing */
@@ -249,7 +255,7 @@
 			for (int i = 0; buttons[i]; i++) {
 				if (_gfx->testButton(bx[i], by[i], buttons[i])) {
 					needRefresh = true;
-					active = i;
+					lastactive = active = i;
 
 					if (active == 15 && mode != kModeNum) { // Space
 						strncpy(temp, _currentWord.c_str(), _currentCode.size());
@@ -304,12 +310,11 @@
 			break;
 		case 0x09:	/* Tab */
 			debugC(3, kDebugLevelText, "Focus change");
-			active++;
+			lastactive = active = lastactive + 1;
 			active %= ARRAYSIZE(buttons) - 1;
 			needRefresh = true;
 			break;
 		}
-		_gfx->doUpdate();
 	}
 
  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