diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/dialog.cpp | 1 | ||||
-rw-r--r-- | gui/gui-manager.cpp | 25 | ||||
-rw-r--r-- | gui/gui-manager.h | 2 |
3 files changed, 22 insertions, 6 deletions
diff --git a/gui/dialog.cpp b/gui/dialog.cpp index 2ec8641257..0522b40b46 100644 --- a/gui/dialog.cpp +++ b/gui/dialog.cpp @@ -75,7 +75,6 @@ int Dialog::runModal() { } void Dialog::open() { - _result = 0; _visible = true; g_gui.openDialog(this); diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp index 212d68430c..98840e6daf 100644 --- a/gui/gui-manager.cpp +++ b/gui/gui-manager.cpp @@ -107,11 +107,11 @@ void GuiManager::initKeymap() { Keymapper *mapper = _system->getEventManager()->getKeymapper(); // Do not try to recreate same keymap over again - if (mapper->getKeymap("gui", tmp) != 0) + if (mapper->getKeymap(kGuiKeymapName, tmp) != 0) return; Action *act; - Keymap *guiMap = new Keymap("gui"); + Keymap *guiMap = new Keymap(kGuiKeymapName); act = new Action(guiMap, "CLOS", _("Close"), kGenericActionType, kStartKeyType); act->addKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE, 0)); @@ -127,6 +127,22 @@ void GuiManager::initKeymap() { mapper->addGlobalKeymap(guiMap); } + +void GuiManager::pushKeymap() { + _system->getEventManager()->getKeymapper()->pushKeymap(Common::kGuiKeymapName); +} + +void GuiManager::popKeymap() { + Common::Keymapper *keymapper = _system->getEventManager()->getKeymapper(); + if (!keymapper->getActiveStack().empty()) { + Common::Keymapper::MapRecord topKeymap = keymapper->getActiveStack().top(); + // TODO: Don't use the keymap name as a way to discriminate GUI maps + if(topKeymap.keymap->getName().equals(Common::kGuiKeymapName)) + keymapper->popKeymap(); + else + warning("An attempt to pop non-gui keymap %s was blocked", topKeymap.keymap->getName().c_str()); + } +} #endif bool GuiManager::loadNewTheme(Common::String id, ThemeEngine::GraphicsMode gfx, bool forced) { @@ -276,8 +292,7 @@ void GuiManager::runLoop() { // try to do it on every launch, checking whether the // map is already existing initKeymap(); - - eventMan->getKeymapper()->pushKeymap("gui"); + pushKeymap(); #endif bool tooltipCheck = false; @@ -392,7 +407,7 @@ void GuiManager::runLoop() { } #ifdef ENABLE_KEYMAPPER - eventMan->getKeymapper()->popKeymap(); + popKeymap(); #endif if (didSaveState) { diff --git a/gui/gui-manager.h b/gui/gui-manager.h index 10f9e6a29f..addd2e6611 100644 --- a/gui/gui-manager.h +++ b/gui/gui-manager.h @@ -126,6 +126,8 @@ protected: byte _cursor[2048]; void initKeymap(); + void pushKeymap(); + void popKeymap(); void saveState(); void restoreState(); |