aboutsummaryrefslogtreecommitdiff
path: root/backends/keymapper/keymap-manager.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/keymap-manager.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/keymap-manager.cpp')
-rw-r--r--backends/keymapper/keymap-manager.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/backends/keymapper/keymap-manager.cpp b/backends/keymapper/keymap-manager.cpp
index a9ab1c7069..1b6b547858 100644
--- a/backends/keymapper/keymap-manager.cpp
+++ b/backends/keymapper/keymap-manager.cpp
@@ -73,6 +73,7 @@ void KeymapManager::registerGlobalKeymap(Keymap *map) {
void KeymapManager::refreshGameDomain() {
if (_gameDomain.getConfigDomain() != ConfMan.getActiveDomain()) {
_gameDomain.deleteAllKeyMaps();
+
_gameDomain.setConfigDomain(ConfMan.getActiveDomain());
}
}
@@ -85,7 +86,8 @@ void KeymapManager::registerGameKeymap(Keymap *map) {
void KeymapManager::initKeymap(ConfigManager::Domain *domain,
Keymap *map) {
- map->loadMappings(domain, _hardwareKeys);
+ map->setConfigDomain(domain);
+ map->loadMappings(_hardwareKeys);
if (map->isComplete(_hardwareKeys) == false) {
automaticMap(map);
map->saveMappings(domain);
@@ -206,6 +208,8 @@ void KeymapManager::automaticMap(Keymap *map) {
break;
}
}
+ map->saveMappings();
+ ConfMan.flushToDisk();
}
Action *KeymapManager::getParentMappedAction(Keymap *map, KeyState key) {
@@ -221,10 +225,13 @@ Action *KeymapManager::getParentMappedAction(Keymap *map, KeyState key) {
}
}
-Keymap *KeymapManager::getKeymap(const String& name) {
+Keymap *KeymapManager::getKeymap(const String& name, bool *global) {
Keymap *keymap = _gameDomain.getKeymap(name);
- if (!keymap)
+ *global = false;
+ if (!keymap) {
keymap = _globalDomain.getKeymap(name);
+ *global = true;
+ }
return keymap;
}