diff options
-rw-r--r-- | engines/agi/agi.h | 1 | ||||
-rw-r--r-- | engines/agi/op_cmd.cpp | 2 | ||||
-rw-r--r-- | engines/agi/text.cpp | 15 |
3 files changed, 17 insertions, 1 deletions
diff --git a/engines/agi/agi.h b/engines/agi/agi.h index c38ffbfbcc..f22c4ade58 100644 --- a/engines/agi/agi.h +++ b/engines/agi/agi.h @@ -979,6 +979,7 @@ public: char *agiSprintf(const char *); void writeStatus(void); void writePrompt(void); + void clearPrompt(void); void clearLines(int, int, int); void flushLines(int, int); bool predictiveDialog(void); diff --git a/engines/agi/op_cmd.cpp b/engines/agi/op_cmd.cpp index 03b1accce8..07078100a8 100644 --- a/engines/agi/op_cmd.cpp +++ b/engines/agi/op_cmd.cpp @@ -1312,6 +1312,8 @@ cmd(prevent_input) { g_agi->newInputMode(INPUT_NONE); game.inputEnabled = false; + + g_agi->clearPrompt(); } cmd(get_string) { diff --git a/engines/agi/text.cpp b/engines/agi/text.cpp index 6317eb0298..63f93802a7 100644 --- a/engines/agi/text.cpp +++ b/engines/agi/text.cpp @@ -656,8 +656,11 @@ void AgiEngine::writePrompt() { int l, fg, bg, pos; int promptLength = strlen(agiSprintf(_game.strings[0])); - if (!_game.inputEnabled || _game.inputMode != INPUT_NORMAL) + if (!_game.inputEnabled || _game.inputMode != INPUT_NORMAL) { + clearPrompt(); + return; + } l = _game.lineUserInput; fg = _game.colorFg; @@ -676,6 +679,16 @@ void AgiEngine::writePrompt() { _gfx->doUpdate(); } +void AgiEngine::clearPrompt() { + int l; + + l = _game.lineUserInput; + clearLines(l, l, _game.colorBg); + flushLines(l, l); + + _gfx->doUpdate(); +} + /** * Clear text lines in the screen. * @param l1 start line |