aboutsummaryrefslogtreecommitdiff
path: root/engines/glk
diff options
context:
space:
mode:
Diffstat (limited to 'engines/glk')
-rw-r--r--engines/glk/window_text_buffer.cpp20
-rw-r--r--engines/glk/window_text_buffer.h8
-rw-r--r--engines/glk/window_text_grid.cpp20
-rw-r--r--engines/glk/window_text_grid.h10
4 files changed, 45 insertions, 13 deletions
diff --git a/engines/glk/window_text_buffer.cpp b/engines/glk/window_text_buffer.cpp
index 788f8caea5..2638302e62 100644
--- a/engines/glk/window_text_buffer.cpp
+++ b/engines/glk/window_text_buffer.cpp
@@ -653,6 +653,9 @@ void TextBufferWindow::requestLineEvent(char *buf, uint maxlen, uint initlen) {
if (g_vm->gli_register_arr)
_inArrayRock = (*g_vm->gli_register_arr)(buf, maxlen, "&+#!Cn");
+
+ // Switch focus to the new window
+ _windows->inputGuessFocus();
}
void TextBufferWindow::requestLineEventUni(uint32 *buf, uint maxlen, uint initlen) {
@@ -707,6 +710,23 @@ void TextBufferWindow::requestLineEventUni(uint32 *buf, uint maxlen, uint initle
if (g_vm->gli_register_arr)
_inArrayRock = (*g_vm->gli_register_arr)(buf, maxlen, "&+#!Iu");
+
+ // Switch focus to the new window
+ _windows->inputGuessFocus();
+}
+
+void TextBufferWindow::requestCharEvent() {
+ _charRequest = true;
+
+ // Switch focus to the new window
+ _windows->inputGuessFocus();
+}
+
+void TextBufferWindow::requestCharEventUni() {
+ _charRequestUni = true;
+
+ // Switch focus to the new window
+ _windows->inputGuessFocus();
}
void TextBufferWindow::cancelLineEvent(Event *ev) {
diff --git a/engines/glk/window_text_buffer.h b/engines/glk/window_text_buffer.h
index 0ac74d2e2a..9020c1a871 100644
--- a/engines/glk/window_text_buffer.h
+++ b/engines/glk/window_text_buffer.h
@@ -220,13 +220,9 @@ public:
virtual void getSize(uint *width, uint *height) const override;
- virtual void requestCharEvent() override {
- _charRequest = true;
- }
+ virtual void requestCharEvent() override;
- virtual void requestCharEventUni() override {
- _charRequestUni = true;
- }
+ virtual void requestCharEventUni() override;
virtual void setEchoLineEvent(uint val) override {
_echoLineInput = val != 0;
diff --git a/engines/glk/window_text_grid.cpp b/engines/glk/window_text_grid.cpp
index e0459e0b2e..226b2f1acd 100644
--- a/engines/glk/window_text_grid.cpp
+++ b/engines/glk/window_text_grid.cpp
@@ -265,6 +265,9 @@ void TextGridWindow::requestLineEvent(char *buf, uint maxlen, uint initlen) {
if (g_vm->gli_register_arr)
_inArrayRock = (*g_vm->gli_register_arr)(buf, maxlen, "&+#!Cn");
+
+ // Switch focus to the new window
+ _windows->inputGuessFocus();
}
void TextGridWindow::requestLineEventUni(uint32 *buf, uint maxlen, uint initlen) {
@@ -317,6 +320,23 @@ void TextGridWindow::requestLineEventUni(uint32 *buf, uint maxlen, uint initlen)
if (g_vm->gli_register_arr)
_inArrayRock = (*g_vm->gli_register_arr)(buf, maxlen, "&+#!Iu");
+
+ // Switch focus to the new window
+ _windows->inputGuessFocus();
+}
+
+void TextGridWindow::requestCharEvent() {
+ _charRequest = true;
+
+ // Switch focus to the new window
+ _windows->inputGuessFocus();
+}
+
+void TextGridWindow::requestCharEventUni() {
+ _charRequestUni = true;
+
+ // Switch focus to the new window
+ _windows->inputGuessFocus();
}
void TextGridWindow::cancelLineEvent(Event *ev) {
diff --git a/engines/glk/window_text_grid.h b/engines/glk/window_text_grid.h
index f5568cd24f..de64ab3801 100644
--- a/engines/glk/window_text_grid.h
+++ b/engines/glk/window_text_grid.h
@@ -171,9 +171,9 @@ public:
virtual void getSize(uint *width, uint *height) const override;
- virtual void requestCharEvent() override {
- _charRequest = true;
- }
+ virtual void requestCharEvent() override;
+
+ virtual void requestCharEventUni() override;
/**
* Prepare for inputing a line
@@ -197,10 +197,6 @@ public:
_mouseRequest = false;
}
- virtual void requestCharEventUni() override {
- _charRequestUni = true;
- }
-
virtual void requestMouseEvent() override {
_mouseRequest = true;
}