Qt: Fix modifier key names in shortcut editor (fixes #2817)

This commit is contained in:
Vicki Pfau 2023-02-09 19:59:55 -08:00
parent 1164d5b470
commit 5558e469e0
5 changed files with 33 additions and 31 deletions

View File

@ -12,6 +12,7 @@ Other fixes:
- Qt: Disable sync while running scripts from main thread (fixes mgba.io/i/2738)
- Qt: Properly cap number of attached players by platform (fixes mgba.io/i/2807)
- Qt: Disable attempted linking betwen incompatible platforms (fixes mgba.io/i/2702)
- Qt: Fix modifier key names in shortcut editor (fixes mgba.io/i/2817)
Misc:
- Qt: Include wayland QPA in AppImage (fixes mgba.io/i/2796)
- Qt: Stop eating boolean action key events (fixes mgba.io/i/2636)

View File

@ -8,6 +8,7 @@
#include "GamepadAxisEvent.h"
#include "GamepadButtonEvent.h"
#include "ShortcutController.h"
#include "utils.h"
#include <QCoreApplication>
#include <QFontMetrics>
@ -33,35 +34,7 @@ void KeyEditor::setValue(int key) {
if (key < 0) {
setText(tr("---"));
} else {
QKeySequence seq(key);
switch (key) {
#ifndef Q_OS_MAC
case Qt::Key_Shift:
setText(QCoreApplication::translate("QShortcut", "Shift"));
break;
case Qt::Key_Control:
setText(QCoreApplication::translate("QShortcut", "Control"));
break;
case Qt::Key_Alt:
setText(QCoreApplication::translate("QShortcut", "Alt"));
break;
case Qt::Key_Meta:
setText(QCoreApplication::translate("QShortcut", "Meta"));
break;
#endif
case Qt::Key_Super_L:
setText(tr("Super (L)"));
break;
case Qt::Key_Super_R:
setText(tr("Super (R)"));
break;
case Qt::Key_Menu:
setText(tr("Menu"));
break;
default:
setText(QKeySequence(key).toString(QKeySequence::NativeText));
break;
}
setText(keyName(key));
}
}
emit valueChanged(key);

View File

@ -6,6 +6,7 @@
#include "ShortcutModel.h"
#include "ShortcutController.h"
#include "utils.h"
using namespace QGBA;
@ -33,7 +34,7 @@ QVariant ShortcutModel::data(const QModelIndex& index, int role) const {
case 0:
return m_controller->visibleName(item->name);
case 1:
return shortcut ? QKeySequence(shortcut->shortcut()).toString(QKeySequence::NativeText) : QVariant();
return shortcut ? keyName(shortcut->shortcut()) : QVariant();
case 2:
if (!shortcut) {
return QVariant();

View File

@ -5,6 +5,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "utils.h"
#include <QCoreApplication>
#include <QKeySequence>
#include <QObject>
namespace QGBA {
@ -59,4 +61,27 @@ bool convertAddress(const QHostAddress* input, Address* output) {
return true;
}
QString keyName(int key) {
switch (key) {
#ifndef Q_OS_MAC
case Qt::Key_Shift:
return QCoreApplication::translate("QShortcut", "Shift");
case Qt::Key_Control:
return QCoreApplication::translate("QShortcut", "Control");
case Qt::Key_Alt:
return QCoreApplication::translate("QShortcut", "Alt");
case Qt::Key_Meta:
return QCoreApplication::translate("QShortcut", "Meta");
#endif
case Qt::Key_Super_L:
return QObject::tr("Super (L)");
case Qt::Key_Super_R:
return QObject::tr("Super (R)");
case Qt::Key_Menu:
return QObject::tr("Menu");
default:
return QKeySequence(key).toString(QKeySequence::NativeText);
}
}
}

View File

@ -67,4 +67,6 @@ constexpr const T& clamp(const T& v, const T& lo, const T& hi) {
}
#endif
QString keyName(int key);
}