aboutsummaryrefslogtreecommitdiff
path: root/engines/glk
diff options
context:
space:
mode:
Diffstat (limited to 'engines/glk')
-rw-r--r--engines/glk/frotz/glk_interface.cpp1
-rw-r--r--engines/glk/window_text_grid.cpp13
2 files changed, 9 insertions, 5 deletions
diff --git a/engines/glk/frotz/glk_interface.cpp b/engines/glk/frotz/glk_interface.cpp
index 88abbe3f68..4aa2ba4e78 100644
--- a/engines/glk/frotz/glk_interface.cpp
+++ b/engines/glk/frotz/glk_interface.cpp
@@ -591,6 +591,7 @@ zchar GlkInterface::os_read_line(int max, zchar *buf, int timeout, int width, in
glk_request_timer_events(0);
buf[ev.val1] = '\0';
+ // If the upper status line area was expanded to show a text box/quotation, restore it back
if (gos_upper && mach_status_ht < curr_status_ht)
reset_status_ht();
curr_status_ht = 0;
diff --git a/engines/glk/window_text_grid.cpp b/engines/glk/window_text_grid.cpp
index d1f26da55f..ee3921d9c6 100644
--- a/engines/glk/window_text_grid.cpp
+++ b/engines/glk/window_text_grid.cpp
@@ -646,11 +646,14 @@ void TextGridWindow::getSize(uint *width, uint *height) const {
/*--------------------------------------------------------------------------*/
void TextGridWindow::TextGridRow::resize(size_t newSize) {
- _chars.clear();
- _attrs.clear();
- _chars.resize(newSize);
- _attrs.resize(newSize);
- Common::fill(&_chars[0], &_chars[0] + newSize, ' ');
+ size_t oldSize = _chars.size();
+ if (newSize != oldSize) {
+ _chars.resize(newSize);
+ _attrs.resize(newSize);
+
+ if (newSize > oldSize)
+ Common::fill(&_chars[0] + oldSize, &_chars[0] + newSize, ' ');
+ }
}
} // End of namespace Glk