aboutsummaryrefslogtreecommitdiff
path: root/backends/keymapper/keymapper.cpp
diff options
context:
space:
mode:
authorStephen Kennedy2008-08-14 01:42:02 +0000
committerStephen Kennedy2008-08-14 01:42:02 +0000
commitc1e8e340ff889c675e5c8e980a06a1174b1ec34d (patch)
treedde605225a2c7871932cf53bad419b4da2d4090d /backends/keymapper/keymapper.cpp
parent5ca906fbd7319c0c171c9157baacf05208a5f6d7 (diff)
downloadscummvm-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.cpp20
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);
}