Qt: Fix keys being mapped incorrectly when loading configuration file (fixes #212)

This commit is contained in:
Jeffrey Pfau 2016-01-23 20:14:46 -08:00
parent 3a134fcda6
commit 181174c810
3 changed files with 12 additions and 6 deletions

View File

@ -34,6 +34,7 @@ Bugfixes:
- Qt: Fix some potential crashes with the gamepad mapping - Qt: Fix some potential crashes with the gamepad mapping
- Debugger: Fix watchpoints in gdb - Debugger: Fix watchpoints in gdb
- ARM7: Fix decoding of some ARM ALU instructions with shifters - ARM7: Fix decoding of some ARM ALU instructions with shifters
- Qt: Fix keys being mapped incorrectly when loading configuration file
Misc: Misc:
- Qt: Window size command line options are now supported - Qt: Window size command line options are now supported
- Qt: Increase usability of key mapper - Qt: Increase usability of key mapper

View File

@ -137,10 +137,13 @@ void ShortcutController::addFunctions(QMenu* menu, std::function<void()> press,
smenu->addFunctions(qMakePair(press, release), shortcut, visibleName, name); smenu->addFunctions(qMakePair(press, release), shortcut, visibleName, name);
endInsertRows(); endInsertRows();
ShortcutItem* item = &smenu->items().last(); ShortcutItem* item = &smenu->items().last();
bool loadedShortcut = false;
if (m_config) { if (m_config) {
loadShortcuts(item); loadedShortcut = loadShortcuts(item);
} }
if (!loadedShortcut && !m_heldKeys.contains(shortcut)) {
m_heldKeys[shortcut] = item; m_heldKeys[shortcut] = item;
}
emit dataChanged(createIndex(smenu->items().count() - 1, 0, item), emit dataChanged(createIndex(smenu->items().count() - 1, 0, item),
createIndex(smenu->items().count() - 1, 2, item)); createIndex(smenu->items().count() - 1, 2, item));
} }
@ -387,10 +390,11 @@ bool ShortcutController::eventFilter(QObject*, QEvent* event) {
return false; return false;
} }
void ShortcutController::loadShortcuts(ShortcutItem* item) { bool ShortcutController::loadShortcuts(ShortcutItem* item) {
if (item->name().isNull()) { if (item->name().isNull()) {
return; return false;
} }
loadGamepadShortcuts(item);
QVariant shortcut = m_config->getQtOption(item->name(), KEY_SECTION); QVariant shortcut = m_config->getQtOption(item->name(), KEY_SECTION);
if (!shortcut.isNull()) { if (!shortcut.isNull()) {
if (shortcut.toString().endsWith("+")) { if (shortcut.toString().endsWith("+")) {
@ -398,8 +402,9 @@ void ShortcutController::loadShortcuts(ShortcutItem* item) {
} else { } else {
updateKey(item, QKeySequence(shortcut.toString())[0]); updateKey(item, QKeySequence(shortcut.toString())[0]);
} }
return true;
} }
loadGamepadShortcuts(item); return false;
} }
void ShortcutController::loadGamepadShortcuts(ShortcutItem* item) { void ShortcutController::loadGamepadShortcuts(ShortcutItem* item) {

View File

@ -128,7 +128,7 @@ protected:
private: private:
ShortcutItem* itemAt(const QModelIndex& index); ShortcutItem* itemAt(const QModelIndex& index);
const ShortcutItem* itemAt(const QModelIndex& index) const; const ShortcutItem* itemAt(const QModelIndex& index) const;
void loadShortcuts(ShortcutItem*); bool loadShortcuts(ShortcutItem*);
void loadGamepadShortcuts(ShortcutItem*); void loadGamepadShortcuts(ShortcutItem*);
void onSubitems(ShortcutItem*, std::function<void(ShortcutItem*)> func); void onSubitems(ShortcutItem*, std::function<void(ShortcutItem*)> func);
void updateKey(ShortcutItem* item, int keySequence); void updateKey(ShortcutItem* item, int keySequence);