From 785d86b63e0151ab002ab49af4f481b7a564a6c9 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 18 Nov 2006 16:26:51 +0000 Subject: Make input string truly editable svn-id: r24732 --- engines/cine/main_loop.cpp | 4 ++-- engines/cine/various.cpp | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 10 deletions(-) (limited to 'engines/cine') diff --git a/engines/cine/main_loop.cpp b/engines/cine/main_loop.cpp index 5b5a927be6..3e130cf781 100644 --- a/engines/cine/main_loop.cpp +++ b/engines/cine/main_loop.cpp @@ -39,7 +39,7 @@ mouseStatusStruct mouseData; uint16 mouseRight = 0; uint16 mouseLeft = 0; -char lastKeyStroke = 0; +int lastKeyStroke = 0; uint16 mouseUpdateStatus; uint16 dummyU16; @@ -112,7 +112,7 @@ void manageEvents(int count) { } break; default: - lastKeyStroke = event.kbd.ascii; + lastKeyStroke = event.kbd.keycode; break; } break; diff --git a/engines/cine/various.cpp b/engines/cine/various.cpp index 25d801ad31..4347c7b27a 100644 --- a/engines/cine/various.cpp +++ b/engines/cine/various.cpp @@ -3192,9 +3192,14 @@ bool makeTextEntryMenu(const char *messagePtr, char *inputString, int stringMaxL currentX += characterWidth + 1; } } + // draw cursor here + if (inputPos == (int)(j + 2)) + gfxDrawLine(currentX, localY - 1, currentX, localY + 8, color, page1Raw); + } - gfxDrawLine(currentX, localY - 1, currentX, localY + 8, color, page1Raw); // cursor + if (strlen(inputString) == 0 || inputPos == 1) // cursor wasn't yet drawn + gfxDrawLine(x + 4, localY - 1, x + 4, localY + 8, color, page1Raw); blitRawScreen(page1Raw); redraw = false; @@ -3220,15 +3225,30 @@ bool makeTextEntryMenu(const char *messagePtr, char *inputString, int stringMaxL } inputPos--; redraw = true; - if (inputPos != 1) { - strncpy(tempString, inputString, inputPos - 1); + case 127: // del + if (inputPos <= inputLength) { + if (inputPos != 1) { + strncpy(tempString, inputString, inputPos - 1); + } + if (inputPos != inputLength) { + strncat(tempString, &inputString[inputPos], inputLength - inputPos); + } + strcpy(inputString, tempString); + inputLength = strlen(inputString); + redraw = true; } - if (inputPos != inputLength) { - strncat(tempString, &inputString[inputPos], inputLength - inputPos); + break; + case 276: // left + if (inputPos > 1) { + inputPos--; + redraw = true; + } + break; + case 275: // right + if (inputPos <= inputLength) { + inputPos++; + redraw = true; } - strcpy(inputString, tempString); - inputLength = strlen(inputString); - redraw = true; break; default: if (((ascii >= 'a') && (ascii <='z')) || -- cgit v1.2.3