[Scummvm-git-logs] scummvm master -> e7132897fdd4d3569e1f1653a8e59af0f54335d6

aquadran aquadran at gmail.com
Mon Oct 26 20:18:15 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
e7132897fd GUI: Fix keymap of virtual keyboard if no GUI opened before (#2555)


Commit: e7132897fdd4d3569e1f1653a8e59af0f54335d6
    https://github.com/scummvm/scummvm/commit/e7132897fdd4d3569e1f1653a8e59af0f54335d6
Author: LMerckx (laurent-merckx at skynet.be)
Date: 2020-10-26T21:18:12+01:00

Commit Message:
GUI: Fix keymap of virtual keyboard if no GUI opened before (#2555)

Changed paths:
    backends/vkeybd/virtual-keyboard.cpp
    backends/vkeybd/virtual-keyboard.h


diff --git a/backends/vkeybd/virtual-keyboard.cpp b/backends/vkeybd/virtual-keyboard.cpp
index 74cf1f2631..164e404591 100644
--- a/backends/vkeybd/virtual-keyboard.cpp
+++ b/backends/vkeybd/virtual-keyboard.cpp
@@ -24,6 +24,7 @@
 
 #ifdef ENABLE_VKEYBD
 
+#include "gui/gui-manager.h"
 #include "backends/vkeybd/virtual-keyboard.h"
 
 #include "backends/keymapper/keymapper.h"
@@ -223,6 +224,21 @@ void VirtualKeyboard::handleMouseUp(int16 x, int16 y) {
 	_kbdGUI->endDrag();
 }
 
+// If no GUI opened before the virtual keyboard, kKeymapTypeGui is not yet initialized
+// Check and do it if needed
+void VirtualKeyboard::initKeymap() {
+        using namespace Common;
+
+        Keymapper *mapper = _system->getEventManager()->getKeymapper();
+
+        // Do not try to recreate same keymap over again
+        if (mapper->getKeymap(kGuiKeymapName) != 0)
+                return;
+
+        Keymap *guiMap = g_gui.getKeymap();
+        mapper->addGlobalKeymap(guiMap);
+}
+
 void VirtualKeyboard::show() {
 	if (!_loaded) {
 		debug(1, "VirtualKeyboard::show() - Virtual keyboard not loaded");
@@ -234,6 +250,7 @@ void VirtualKeyboard::show() {
 	switchMode(_initialMode);
 
 	{
+		initKeymap();
 		KeymapTypeEnabler guiKeymap(_system->getEventManager()->getKeymapper(), Keymap::kKeymapTypeGui);
 		_kbdGUI->run();
 	}
diff --git a/backends/vkeybd/virtual-keyboard.h b/backends/vkeybd/virtual-keyboard.h
index 38139e2ad8..6be4c31af8 100644
--- a/backends/vkeybd/virtual-keyboard.h
+++ b/backends/vkeybd/virtual-keyboard.h
@@ -242,6 +242,7 @@ protected:
 	bool checkModeResolutions();
 	void switchMode(Mode *newMode);
 	void switchMode(const String &newMode);
+	void initKeymap();
 	void handleMouseDown(int16 x, int16 y);
 	void handleMouseUp(int16 x, int16 y);
 	String findArea(int16 x, int16 y);




More information about the Scummvm-git-logs mailing list