summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/kernel/qkeysequence.cpp5
-rw-r--r--tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp20
2 files changed, 25 insertions, 0 deletions
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 9c0b07c64eb..c17d41ba6f2 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -1342,6 +1342,11 @@ QString QKeySequencePrivate::encodeString(int key, QKeySequence::SequenceFormat
{
bool nativeText = (format == QKeySequence::NativeText);
QString s;
+
+ // Handle -1 (Invalid Key) and Qt::Key_unknown gracefully
+ if (key == -1 || key == Qt::Key_unknown)
+ return s;
+
#if defined(Q_OS_MAC)
if (nativeText) {
// On Mac OS X the order (by default) is Meta, Alt, Shift, Control.
diff --git a/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
index 9845b388b42..f8eae2067ec 100644
--- a/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
@@ -122,6 +122,8 @@ private slots:
void mnemonic();
void toString_data();
void toString();
+ void toStringFromKeycode_data();
+ void toStringFromKeycode();
void streamOperators_data();
void streamOperators();
void parseString_data();
@@ -476,6 +478,24 @@ void tst_QKeySequence::toString()
}
+void tst_QKeySequence::toStringFromKeycode_data()
+{
+ QTest::addColumn<QKeySequence>("keycode");
+ QTest::addColumn<QString>("expectedString");
+
+ QTest::newRow("A") << QKeySequence(Qt::Key_A) << "A";
+ QTest::newRow("-1") << QKeySequence(-1) << "";
+ QTest::newRow("Unknown") << QKeySequence(Qt::Key_unknown) << "";
+}
+
+void tst_QKeySequence::toStringFromKeycode()
+{
+ QFETCH(QKeySequence, keycode);
+ QFETCH(QString, expectedString);
+
+ QCOMPARE(QKeySequence(keycode).toString(), expectedString);
+}
+
void tst_QKeySequence::streamOperators_data()
{
operatorQString_data();