aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTarek Soliman2012-02-20 10:52:50 -0600
committerTarek Soliman2012-02-20 10:52:50 -0600
commit6c4d65e53f2bd4d61043ed06fcdf61416405bf87 (patch)
tree635de0d6ac3fbef68be65aef22e855f038df2d14
parenta291679445a538ed8143a8f26952c38d6e9d3dd4 (diff)
downloadscummvm-rg350-6c4d65e53f2bd4d61043ed06fcdf61416405bf87.tar.gz
scummvm-rg350-6c4d65e53f2bd4d61043ed06fcdf61416405bf87.tar.bz2
scummvm-rg350-6c4d65e53f2bd4d61043ed06fcdf61416405bf87.zip
KEYMAPPER: Change how keymaps are displayed in the remap dialog
This makes it so that there's 2 groups: 1 - The keymap stack 2 - The loaded keymaps The first group displays which keymaps are active and which keymaps are completely blocked due to an opaque keymap on top. The second group displays which loaded keymaps store their mappings globally and which ones store their mappings per-target.
-rw-r--r--backends/keymapper/remap-dialog.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/backends/keymapper/remap-dialog.cpp b/backends/keymapper/remap-dialog.cpp
index eb2d4c5441..4ef39a15e5 100644
--- a/backends/keymapper/remap-dialog.cpp
+++ b/backends/keymapper/remap-dialog.cpp
@@ -57,14 +57,12 @@ RemapDialog::~RemapDialog() {
}
void RemapDialog::open() {
- bool divider = false;
const Stack<Keymapper::MapRecord> &activeKeymaps = _keymapper->getActiveStack();
if (activeKeymaps.size() > 0) {
if (activeKeymaps.top().keymap->getName() == Common::kGuiKeymapName)
_topKeymapIsGui = true;
_kmPopUp->appendEntry(activeKeymaps.top().keymap->getName() + _(" (Effective)"));
- divider = true;
}
Keymapper::Domain *_globalKeymaps = &_keymapper->getGlobalDomain();
@@ -98,35 +96,30 @@ void RemapDialog::open() {
uint32 idx = 0;
if (activeKeymaps.size() > 1) {
- if (divider)
- _kmPopUp->appendEntry("");
int topIndex = activeKeymaps.size() - 1;
+ bool active = activeKeymaps[topIndex].transparent;
for (int i = topIndex - 1; i >= 0; --i) {
Keymapper::MapRecord mr = activeKeymaps[i];
- _kmPopUp->appendEntry(mr.keymap->getName() + _(" (Active)"), idx);
+ _kmPopUp->appendEntry(mr.keymap->getName() + (active ? _(" (Active)") : _(" (Blocked)")), idx);
_keymapTable[idx++] = mr.keymap;
+ active &= mr.transparent;
}
- divider = true;
}
+ _kmPopUp->appendEntry("");
+
if (_globalKeymaps) {
- if (divider)
- _kmPopUp->appendEntry("");
for (it = _globalKeymaps->begin(); it != _globalKeymaps->end(); ++it) {
_kmPopUp->appendEntry(it->_value->getName() + _(" (Global)"), idx);
_keymapTable[idx++] = it->_value;
}
- divider = true;
}
if (_gameKeymaps) {
- if (divider)
- _kmPopUp->appendEntry("");
for (it = _gameKeymaps->begin(); it != _gameKeymaps->end(); ++it) {
_kmPopUp->appendEntry(it->_value->getName() + _(" (Game)"), idx);
_keymapTable[idx++] = it->_value;
}
- divider = true;
}
_changes = false;