mirror of https://github.com/mgba-emu/mgba.git
Merge branch 'feature/input-revamp' into medusa
This commit is contained in:
commit
2493e7e521
|
@ -110,8 +110,8 @@ void InputController::addPlatform(mPlatform platform, const QString& visibleName
|
||||||
m_inputModel->addMenu(autofire, m_autofireMenu.get());
|
m_inputModel->addMenu(autofire, m_autofireMenu.get());
|
||||||
|
|
||||||
for (size_t i = 0; i < info->nKeys; ++i) {
|
for (size_t i = 0; i < info->nKeys; ++i) {
|
||||||
m_inputModel->addKey(input, platform, i, 0, info->keyId[i], info->keyId[i]);
|
m_inputModel->addKey(input, platform, i, 0, info->keyId[i], QString("%1.%2").arg(info->platformName).arg(info->keyId[i]));
|
||||||
m_inputModel->addKey(autofire, platform, i, 0, info->keyId[i], info->keyId[i]);
|
m_inputModel->addKey(autofire, platform, i, 0, info->keyId[i], QString("%1.autofire.%2").arg(info->platformName).arg(info->keyId[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BUILD_SDL
|
#ifdef BUILD_SDL
|
||||||
|
@ -739,7 +739,7 @@ void InputController::releaseFocus(QWidget* focus) {
|
||||||
|
|
||||||
void InputController::setupCallback(GameController* controller) {
|
void InputController::setupCallback(GameController* controller) {
|
||||||
m_inputModel->setKeyCallback([this, controller](QMenu* menu, int key, bool down) {
|
m_inputModel->setKeyCallback([this, controller](QMenu* menu, int key, bool down) {
|
||||||
if (menu == m_autofireMenu.get()) {
|
if (menu->parent() == m_autofireMenu.get()) {
|
||||||
controller->setAutofire(key, down);
|
controller->setAutofire(key, down);
|
||||||
} else {
|
} else {
|
||||||
if (down) {
|
if (down) {
|
||||||
|
|
|
@ -166,7 +166,13 @@ void InputModel::addKey(QMenu* menu, mPlatform platform, int key, int shortcut,
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_keys[qMakePair(platform, key)] = item;
|
bool loadedShortcut = false;
|
||||||
|
if (m_config) {
|
||||||
|
loadedShortcut = loadShortcuts(item);
|
||||||
|
}
|
||||||
|
if (!loadedShortcut && !m_keys.contains(qMakePair(platform, shortcut))) {
|
||||||
|
m_keys[qMakePair(platform, shortcut)] = item;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndex InputModel::addMenu(QMenu* menu, QMenu* parentMenu) {
|
QModelIndex InputModel::addMenu(QMenu* menu, QMenu* parentMenu) {
|
||||||
|
@ -254,11 +260,20 @@ void InputModel::updateKey(const QModelIndex& index, int keySequence) {
|
||||||
|
|
||||||
void InputModel::updateKey(InputItem* item, int keySequence) {
|
void InputModel::updateKey(InputItem* item, int keySequence) {
|
||||||
int oldShortcut = item->shortcut();
|
int oldShortcut = item->shortcut();
|
||||||
if (item->functions().first || item->key() >= 0) {
|
if (item->functions().first) {
|
||||||
if (oldShortcut > 0) {
|
if (oldShortcut > 0) {
|
||||||
m_heldKeys.take(oldShortcut);
|
m_heldKeys.take(oldShortcut);
|
||||||
}
|
}
|
||||||
if (keySequence >= 0) {
|
if (keySequence > 0) {
|
||||||
|
m_heldKeys[keySequence] = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item->key() >= 0) {
|
||||||
|
if (oldShortcut > 0) {
|
||||||
|
m_keys.take(qMakePair(item->platform(), oldShortcut));
|
||||||
|
}
|
||||||
|
if (keySequence > 0) {
|
||||||
m_keys[qMakePair(item->platform(), keySequence)] = item;
|
m_keys[qMakePair(item->platform(), keySequence)] = item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue