From c1e8e340ff889c675e5c8e980a06a1174b1ec34d Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Thu, 14 Aug 2008 01:42:02 +0000 Subject: * Saving of keymaps fully implemented * Added Keymapper::cleanupGameKeymaps() with code to remove game keymaps from active stack svn-id: r33853 --- backends/keymapper/keymapper.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'backends/keymapper/keymapper.cpp') diff --git a/backends/keymapper/keymapper.cpp b/backends/keymapper/keymapper.cpp index 93b45e1d99..e011b215f0 100644 --- a/backends/keymapper/keymapper.cpp +++ b/backends/keymapper/keymapper.cpp @@ -52,20 +52,28 @@ void Keymapper::addGameKeymap(Keymap *keymap) { _keymapMan->registerGameKeymap(keymap); } +void Keymapper::cleanupGameKeymaps() { + Stack newStack; + for (int i = 0; i < _activeMaps.size(); i++) { + if (!_activeMaps[i].global) + newStack.push(_activeMaps[i]); + } + _activeMaps = newStack; +} + bool Keymapper::pushKeymap(const String& name, bool inherit) { - Keymap *newMap = _keymapMan->getKeymap(name); + bool global; + Keymap *newMap = _keymapMan->getKeymap(name, &global); if (!newMap) { warning("Keymap '%s' not registered", name.c_str()); return false; } - pushKeymap(newMap, inherit); + pushKeymap(newMap, inherit, global); return true; } -void Keymapper::pushKeymap(Keymap *newMap, bool inherit) { - MapRecord mr; - mr.inherit = inherit; - mr.keymap = newMap; +void Keymapper::pushKeymap(Keymap *newMap, bool inherit, bool global) { + MapRecord mr = {newMap, inherit, global}; _activeMaps.push(mr); } -- cgit v1.2.3