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/keymap-manager.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/keymap-manager.cpp')
-rw-r--r-- | backends/keymapper/keymap-manager.cpp | 13 |
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; } |