summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-01-27 16:53:48 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-02-03 06:24:11 +0000
commitb85b78f17d3d18887b409a3ce9d2f2c71ae68844 (patch)
tree91e454eac7a008a30832b72d361a9c93e6842882 /tests/auto/widgets
parent912f1ebaad29e5a0b8acba48691a565ba56c6b9e (diff)
Suppress Ctrl/Ctrl+Shift keypresses in line/text edits.
Ctrl/Ctrl+Shift should not cause any characters to be input (as opposed to AltGr(Alt+Ctrl) as used on German keyboards). Extend the tests in QLineEdit and QPlainTextEdit to check the modifiers, remove test from QTextEdit since it is handled by QWidgetTextControl. Task-number: QTBUG-35734 Change-Id: Ie0004fac68cf840c68247f27547e84b021355cd2 Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp35
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp33
-rw-r--r--tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp7
3 files changed, 55 insertions, 20 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index fec79326c8..5b467f4f17 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -249,6 +249,7 @@ private slots:
void editInvalidText();
+ void charWithAltOrCtrlModifier_data();
void charWithAltOrCtrlModifier();
void inlineCompletion();
@@ -3224,19 +3225,35 @@ void tst_QLineEdit::editInvalidText()
testWidget->setValidator(0);
}
+Q_DECLARE_METATYPE(Qt::KeyboardModifiers)
+
+void tst_QLineEdit::charWithAltOrCtrlModifier_data()
+{
+ QTest::addColumn<Qt::KeyboardModifiers>("modifiers");
+ QTest::addColumn<bool>("textExpected");
+ QTest::newRow("no-modifiers") << Qt::KeyboardModifiers() << true;
+ // Ctrl, Ctrl+Shift: No text (QTBUG-35734)
+ QTest::newRow("ctrl") << Qt::KeyboardModifiers(Qt::ControlModifier)
+ << false;
+ QTest::newRow("ctrl-shift") << Qt::KeyboardModifiers(Qt::ShiftModifier | Qt::ControlModifier)
+ << false;
+ QTest::newRow("alt") << Qt::KeyboardModifiers(Qt::AltModifier) << true;
+ // Alt-Ctrl (Alt-Gr on German keyboards, Task 129098): Expect text
+ QTest::newRow("alt-ctrl") << (Qt::AltModifier | Qt::ControlModifier) << true;
+}
+
void tst_QLineEdit::charWithAltOrCtrlModifier()
{
+ QFETCH(Qt::KeyboardModifiers, modifiers);
+ QFETCH(bool, textExpected);
+
QLineEdit *testWidget = ensureTestWidget();
testWidget->clear();
- QCOMPARE(testWidget->text(), QString(""));
- QTest::keyPress(testWidget, Qt::Key_Plus);
- QCOMPARE(testWidget->text(), QString("+"));
- QTest::keyPress(testWidget, Qt::Key_Plus, Qt::ControlModifier);
- QCOMPARE(testWidget->text(), QString("++"));
- QTest::keyPress(testWidget, Qt::Key_Plus, Qt::AltModifier);
- QCOMPARE(testWidget->text(), QString("+++"));
- QTest::keyPress(testWidget, Qt::Key_Plus, Qt::AltModifier | Qt::ControlModifier);
- QCOMPARE(testWidget->text(), QString("++++"));
+ QVERIFY(testWidget->text().isEmpty());
+
+ QTest::keyPress(testWidget, Qt::Key_Plus, modifiers);
+ const QString expectedText = textExpected ? QLatin1String("+") : QString();
+ QCOMPARE(testWidget->text(), expectedText);
}
void tst_QLineEdit::leftKeyOnSelectedText()
diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
index cf495e2238..390b99c6e7 100644
--- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
@@ -99,7 +99,8 @@ private slots:
#ifndef QT_NO_CLIPBOARD
void copyAndSelectAllInReadonly();
#endif
- void ctrlAltInput();
+ void charWithAltOrCtrlModifier_data();
+ void charWithAltOrCtrlModifier();
void noPropertiesOnDefaultTextEditCharFormat();
void setPlainTextShouldEmitTextChangedOnce();
void overwriteMode();
@@ -691,10 +692,34 @@ void tst_QPlainTextEdit::copyAndSelectAllInReadonly()
}
#endif
-void tst_QPlainTextEdit::ctrlAltInput()
+Q_DECLARE_METATYPE(Qt::KeyboardModifiers)
+
+// Test how QWidgetTextControlPrivate (used in QPlainTextEdit, QTextEdit)
+// handles input with modifiers.
+void tst_QPlainTextEdit::charWithAltOrCtrlModifier_data()
+{
+ QTest::addColumn<Qt::KeyboardModifiers>("modifiers");
+ QTest::addColumn<bool>("textExpected");
+
+ QTest::newRow("no-modifiers") << Qt::KeyboardModifiers() << true;
+ // Ctrl, Ctrl+Shift: No text (QTBUG-35734)
+ QTest::newRow("ctrl") << Qt::KeyboardModifiers(Qt::ControlModifier)
+ << false;
+ QTest::newRow("ctrl-shift") << Qt::KeyboardModifiers(Qt::ShiftModifier | Qt::ControlModifier)
+ << false;
+ QTest::newRow("alt") << Qt::KeyboardModifiers(Qt::AltModifier) << true;
+ // Alt-Ctrl (Alt-Gr on German keyboards, Task 129098): Expect text
+ QTest::newRow("alt-ctrl") << (Qt::AltModifier | Qt::ControlModifier) << true;
+}
+
+void tst_QPlainTextEdit::charWithAltOrCtrlModifier()
{
- QTest::keyClick(ed, Qt::Key_At, Qt::ControlModifier | Qt::AltModifier);
- QCOMPARE(ed->toPlainText(), QString("@"));
+ QFETCH(Qt::KeyboardModifiers, modifiers);
+ QFETCH(bool, textExpected);
+
+ QTest::keyClick(ed, Qt::Key_At, modifiers);
+ const QString expectedText = textExpected ? QLatin1String("@") : QString();
+ QCOMPARE(ed->toPlainText(), expectedText);
}
void tst_QPlainTextEdit::noPropertiesOnDefaultTextEditCharFormat()
diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
index 8a82ee433d..220185c04f 100644
--- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
@@ -122,7 +122,6 @@ private slots:
#ifndef QT_NO_CLIPBOARD
void copyAndSelectAllInReadonly();
#endif
- void ctrlAltInput();
void noPropertiesOnDefaultTextEditCharFormat();
void setPlainTextShouldUseCurrentCharFormat();
void setPlainTextShouldEmitTextChangedOnce();
@@ -1042,12 +1041,6 @@ void tst_QTextEdit::copyAndSelectAllInReadonly()
}
#endif
-void tst_QTextEdit::ctrlAltInput()
-{
- QTest::keyClick(ed, Qt::Key_At, Qt::ControlModifier | Qt::AltModifier);
- QCOMPARE(ed->toPlainText(), QString("@"));
-}
-
void tst_QTextEdit::noPropertiesOnDefaultTextEditCharFormat()
{
// there should be no properties set on the default/initial char format