aboutsummaryrefslogtreecommitdiff
path: root/saga/interface.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2005-06-21 15:41:35 +0000
committerTorbjörn Andersson2005-06-21 15:41:35 +0000
commitd38a41e5327f1a975160fa3fe9cd810149b1fbc9 (patch)
tree93afd9e9f221a8b65f9101166c55623e5c4db7a4 /saga/interface.cpp
parentee28783c746c158550eed88eb20b18025ca79cad (diff)
downloadscummvm-rg350-d38a41e5327f1a975160fa3fe9cd810149b1fbc9.tar.gz
scummvm-rg350-d38a41e5327f1a975160fa3fe9cd810149b1fbc9.tar.bz2
scummvm-rg350-d38a41e5327f1a975160fa3fe9cd810149b1fbc9.zip
When a key is pressed, go back to repeat phase 0 again. This is so that we
won't continue a fast repeat with the new key. (Annoying example: It could be tricky to type upper-case letters because if you didn't type the letter fast enough "Shift" would begin to repeat, and then whatever letter you typed would start repeating immediately.) svn-id: r18423
Diffstat (limited to 'saga/interface.cpp')
-rw-r--r--saga/interface.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/saga/interface.cpp b/saga/interface.cpp
index 1d4f5a1181..a803a116ba 100644
--- a/saga/interface.cpp
+++ b/saga/interface.cpp
@@ -279,15 +279,15 @@ void Interface::setMode(int mode) {
_panelMode = mode;
- switch(_panelMode) {
- case(kPanelMain):
+ switch (_panelMode) {
+ case kPanelMain:
_mainPanel.currentButton = NULL;
break;
- case(kPanelConverse):
+ case kPanelConverse:
_conversePanel.currentButton = NULL;
converseDisplayText();
break;
- case(kPanelOption):
+ case kPanelOption:
_optionPanel.currentButton = NULL;
_vm->fillSaveList();
calcOptionSaveSlider();
@@ -295,13 +295,13 @@ void Interface::setMode(int mode) {
_optionSaveFileTitleNumber = _vm->getDisplayInfo().optionSaveFileVisible - 1;
}
break;
- case(kPanelLoad):
+ case kPanelLoad:
_loadPanel.currentButton = NULL;
break;
- case(kPanelQuit):
+ case kPanelQuit:
_quitPanel.currentButton = NULL;
break;
- case(kPanelSave):
+ case kPanelSave:
_savePanel.currentButton = NULL;
_textInputMaxWidth = _saveEdit->width - 10;
_textInput = true;
@@ -314,9 +314,11 @@ void Interface::setMode(int mode) {
draw();
}
-bool Interface::processAscii(uint16 ascii) {
+bool Interface::processAscii(uint16 ascii, bool synthetic) {
int i;
PanelButton *panelButton;
+ if (!synthetic)
+ _textInputRepeatPhase = 0;
if (_statusTextInput) {
processStatusTextInput(ascii);
return true;
@@ -450,6 +452,7 @@ void Interface::textInputRepeatCallback(void *refCon) {
void Interface::textInputStartRepeat(uint16 ascii) {
if (!_textInputRepeatPhase) {
_textInputRepeatPhase = 1;
+ Common::g_timer->removeTimerProc(&textInputRepeatCallback);
Common::g_timer->installTimerProc(&textInputRepeatCallback, KEYBOARD_REPEAT_DELAY1, this);
}
@@ -462,7 +465,7 @@ void Interface::textInputRepeat() {
Common::g_timer->removeTimerProc(&textInputRepeatCallback);
Common::g_timer->installTimerProc(&textInputRepeatCallback, KEYBOARD_REPEAT_DELAY2, this);
} else if (_textInputRepeatPhase == 2) {
- processAscii(_textInputRepeatChar);
+ processAscii(_textInputRepeatChar, true);
}
}