diff options
author | Stephen Kennedy | 2008-08-14 01:42:02 +0000 |
---|---|---|
committer | Stephen Kennedy | 2008-08-14 01:42:02 +0000 |
commit | c1e8e340ff889c675e5c8e980a06a1174b1ec34d (patch) | |
tree | dde605225a2c7871932cf53bad419b4da2d4090d /backends/keymapper/keymapper.cpp | |
parent | 5ca906fbd7319c0c171c9157baacf05208a5f6d7 (diff) | |
download | scummvm-rg350-c1e8e340ff889c675e5c8e980a06a1174b1ec34d.tar.gz scummvm-rg350-c1e8e340ff889c675e5c8e980a06a1174b1ec34d.tar.bz2 scummvm-rg350-c1e8e340ff889c675e5c8e980a06a1174b1ec34d.zip |
* Saving of keymaps fully implemented
* Added Keymapper::cleanupGameKeymaps() with code to remove game keymaps from active stack
svn-id: r33853
Diffstat (limited to 'backends/keymapper/keymapper.cpp')
-rw-r--r-- | backends/keymapper/keymapper.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
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<MapRecord> 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); } |