diff --git a/autotests/kxmlgui_unittest.h b/autotests/kxmlgui_unittest.h --- a/autotests/kxmlgui_unittest.h +++ b/autotests/kxmlgui_unittest.h @@ -49,6 +49,7 @@ void testShortcuts(); void testPopupMenuParent(); void testSpecificApplicationLanguageQLocale(); + void testSingleModifierQKeySequenceEndsWithPlus(); }; #endif diff --git a/autotests/kxmlgui_unittest.cpp b/autotests/kxmlgui_unittest.cpp --- a/autotests/kxmlgui_unittest.cpp +++ b/autotests/kxmlgui_unittest.cpp @@ -1097,3 +1097,14 @@ QCOMPARE(QLocale::system(), originalSystemLocale); } + +void KXmlGui_UnitTest::testSingleModifierQKeySequenceEndsWithPlus() +{ + // Check that native texts of the Meta, Alt, Control, Shift, Keypad modifiers end in "+" + // we depend on that in KKeySequenceWidgetPrivate::updateShortcutDisplay() + QVERIFY(QKeySequence(Qt::MetaModifier).toString(QKeySequence::NativeText).endsWith(QLatin1Char('+'))); + QVERIFY(QKeySequence(Qt::AltModifier).toString(QKeySequence::NativeText).endsWith(QLatin1Char('+'))); + QVERIFY(QKeySequence(Qt::ControlModifier).toString(QKeySequence::NativeText).endsWith(QLatin1Char('+'))); + QVERIFY(QKeySequence(Qt::ShiftModifier).toString(QKeySequence::NativeText).endsWith(QLatin1Char('+'))); + QVERIFY(QKeySequence(Qt::KeypadModifier).toString(QKeySequence::NativeText).endsWith(QLatin1Char('+'))); +} diff --git a/src/kkeysequencewidget.cpp b/src/kkeysequencewidget.cpp --- a/src/kkeysequencewidget.cpp +++ b/src/kkeysequencewidget.cpp @@ -640,28 +640,28 @@ s.append(QLatin1Char(',')); } if (modifierKeys & Qt::MetaModifier) { - s += KKeyServer::modToStringUser(Qt::MetaModifier) + QLatin1Char('+'); + s += QKeySequence(Qt::MetaModifier).toString(QKeySequence::NativeText); } #if defined(Q_OS_MAC) if (modifierKeys & Qt::AltModifier) { - s += KKeyServer::modToStringUser(Qt::AltModifier) + QLatin1Char('+'); + s += QKeySequence(Qt::AltModifier).toString(QKeySequence::NativeText); } if (modifierKeys & Qt::ControlModifier) { - s += KKeyServer::modToStringUser(Qt::ControlModifier) + QLatin1Char('+'); + s += QKeySequence(Qt::ControlModifier).toString(QKeySequence::NativeText); } #else if (modifierKeys & Qt::ControlModifier) { - s += KKeyServer::modToStringUser(Qt::ControlModifier) + QLatin1Char('+'); + s += QKeySequence(Qt::ControlModifier).toString(QKeySequence::NativeText); } if (modifierKeys & Qt::AltModifier) { - s += KKeyServer::modToStringUser(Qt::AltModifier) + QLatin1Char('+'); + s += QKeySequence(Qt::AltModifier).toString(QKeySequence::NativeText); } #endif if (modifierKeys & Qt::ShiftModifier) { - s += KKeyServer::modToStringUser(Qt::ShiftModifier) + QLatin1Char('+'); + s += QKeySequence(Qt::ShiftModifier).toString(QKeySequence::NativeText); } if (modifierKeys & Qt::KeypadModifier) { - s += KKeyServer::modToStringUser(Qt::KeypadModifier) + QLatin1Char('+'); + s += QKeySequence(Qt::KeypadModifier).toString(QKeySequence::NativeText); } } else if (nKey == 0) {