diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-12-12 10:38:26 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-12-12 23:21:21 +0100 |
commit | c0b899b3df328f9957bea404f351b492ecfefe31 (patch) | |
tree | 78b553b68a3d0b785716576b2e5b647c3691186b /tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | |
parent | 54f0733e7df4134afbcf0a81ba39751f31c9b84d (diff) |
tst_qlinedit: Create a new test widget on demand for each test.
The test used a member testWidget that was cleared and reset after each
test, which caused focus fights and side effects. The widget is now
created and shown only when necessary.
Change-Id: I0dc635e9d4cdf4f899994b88206bb0125526f6df
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 156 |
1 files changed, 120 insertions, 36 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index d6d48a1e8d..e9cc1e6abd 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -71,6 +71,7 @@ #include <qstringlistmodel.h> #include <qsortfilterproxymodel.h> #include <qdebug.h> +#include <qscreen.h> #include "qcommonstyle.h" #include "qstyleoption.h" @@ -87,6 +88,17 @@ QT_BEGIN_NAMESPACE class QPainter; QT_END_NAMESPACE +static inline void centerOnScreen(QWidget *w, const QSize &size) +{ + const QPoint offset = QPoint(size.width() / 2, size.height() / 2); + w->move(QGuiApplication::primaryScreen()->availableGeometry().center() - offset); +} + +static inline void centerOnScreen(QWidget *w) +{ + centerOnScreen(w, w->geometry().size()); +} + class StyleOptionTestStyle : public QCommonStyle { private: @@ -316,6 +328,7 @@ private: // keyClicks(..) is moved to QtTestCase void psKeyClick(QWidget *target, Qt::Key key, Qt::KeyboardModifiers pressState = 0); void psKeyClick(QTestEventList &keys, Qt::Key key, Qt::KeyboardModifiers pressState = 0); + QLineEdit *ensureTestWidget(); bool validInput; QString changed_string; @@ -325,7 +338,7 @@ private: int selection_count; int lastCursorPos; int newCursorPos; - QLineEdit *testWidget; + QLineEdit *m_testWidget; int m_keyboardScheme; PlatformInputContext m_platformInputContext; }; @@ -354,7 +367,7 @@ void tst_QLineEdit::getSetCheck() QCOMPARE(true, obj1.dragEnabled()); } -tst_QLineEdit::tst_QLineEdit() : validInput(false), m_keyboardScheme(0) +tst_QLineEdit::tst_QLineEdit() : validInput(false), m_testWidget(0), m_keyboardScheme(0) { if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) m_keyboardScheme = theme->themeHint(QPlatformTheme::KeyboardScheme).toInt(); @@ -370,23 +383,24 @@ tst_QLineEdit::~tst_QLineEdit() { } +QLineEdit *tst_QLineEdit::ensureTestWidget() +{ + if (!m_testWidget) { + m_testWidget = new QLineEdit; + m_testWidget->setObjectName("testWidget"); + connect(m_testWidget, SIGNAL(cursorPositionChanged(int,int)), this, SLOT(onCursorPositionChanged(int,int))); + connect(m_testWidget, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged(QString))); + connect(m_testWidget, SIGNAL(textEdited(QString)), this, SLOT(onTextEdited(QString))); + connect(m_testWidget, SIGNAL(returnPressed()), this, SLOT(onReturnPressed())); + connect(m_testWidget, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); + connect(m_testWidget, SIGNAL(editingFinished()), this, SLOT(editingFinished())); + m_testWidget->resize(200,50); + } + return m_testWidget; +} + void tst_QLineEdit::initTestCase() { - testWidget = new QLineEdit(0); - testWidget->setObjectName("testWidget"); - connect(testWidget, SIGNAL(cursorPositionChanged(int,int)), this, SLOT(onCursorPositionChanged(int,int))); - connect(testWidget, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged(QString))); - connect(testWidget, SIGNAL(textEdited(QString)), this, SLOT(onTextEdited(QString))); - connect(testWidget, SIGNAL(returnPressed()), this, SLOT(onReturnPressed())); - connect(testWidget, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); - connect(testWidget, SIGNAL(editingFinished()), this, SLOT(editingFinished())); - - testWidget->resize(200,50); - testWidget->show(); - QVERIFY(QTest::qWaitForWindowExposed(testWidget)); - QApplication::setActiveWindow(testWidget); - QTRY_VERIFY(testWidget->hasFocus()); - changed_count = 0; edited_count = 0; selection_count = 0; @@ -397,7 +411,6 @@ void tst_QLineEdit::initTestCase() void tst_QLineEdit::cleanupTestCase() { - delete testWidget; QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod()); inputMethodPrivate->testContext = 0; } @@ -405,23 +418,17 @@ void tst_QLineEdit::cleanupTestCase() void tst_QLineEdit::init() { return_count = 0; - testWidget->clear(); - testWidget->setEchoMode(QLineEdit::Normal); - testWidget->setMaxLength(32767); - testWidget->setReadOnly(false); - testWidget->setText(""); - testWidget->setInputMask(""); - testWidget->setFrame(true); - testWidget->setValidator(0); - testWidget->setDragEnabled(true); } void tst_QLineEdit::cleanup() { + delete m_testWidget; + m_testWidget = 0; } void tst_QLineEdit::experimental() { + QLineEdit *testWidget = ensureTestWidget(); QIntValidator intValidator(3, 7, 0); testWidget->setValidator(&intValidator); testWidget->setText(""); @@ -439,8 +446,7 @@ void tst_QLineEdit::experimental() void tst_QLineEdit::upperAndLowercase() { - testWidget->setInputMask(""); - testWidget->setText(""); + QLineEdit *testWidget = ensureTestWidget(); QTest::keyClicks(testWidget, "aAzZ`1234567890-=~!@#$%^&*()_+[]{}\\|;:'\",.<>/?"); qApp->processEvents(); @@ -662,6 +668,7 @@ void tst_QLineEdit::setInputMask() QEXPECT_FAIL( "insert blank=input", "To eat blanks or not? Known issue. Task 43172", Abort); // First set the input mask + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMask(mask); // then either insert using insert() or keyboard @@ -705,12 +712,14 @@ void tst_QLineEdit::inputMask() QFETCH(QString, mask); QFETCH(QString, expectedMask); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMask(mask); QCOMPARE(testWidget->inputMask(), expectedMask); } void tst_QLineEdit::clearInputMask() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMask("000.000.000.000"); QVERIFY(testWidget->inputMask() != QString::null); testWidget->setInputMask(QString::null); @@ -792,6 +801,7 @@ void tst_QLineEdit::keypress_inputMask() QFETCH(QString, expectedText); QFETCH(QString, expectedDisplayText); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMask(mask); keys.simulate(testWidget); @@ -828,6 +838,7 @@ void tst_QLineEdit::hasAcceptableInputMask() QFETCH(QString, valid); // test that invalid input (for required) work for optionalMask + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMask(optionalMask); validInput = false; testWidget->setText(invalid); @@ -879,6 +890,7 @@ public: void tst_QLineEdit::hasAcceptableInputValidator() { + QLineEdit *testWidget = ensureTestWidget(); QSignalSpy spyChanged(testWidget, SIGNAL(textChanged(QString))); QSignalSpy spyEdited(testWidget, SIGNAL(textEdited(QString))); @@ -929,6 +941,7 @@ void tst_QLineEdit::maskCharacter() QFETCH(QString, input); QFETCH(bool, expectedValid); + QLineEdit *testWidget = ensureTestWidget(); QFocusEvent lostFocus(QEvent::FocusOut); testWidget->setInputMask(mask); @@ -1079,6 +1092,7 @@ void tst_QLineEdit::undo() QFETCH(QStringList, expectedString); QFETCH(bool, use_keys); + QLineEdit *testWidget = ensureTestWidget(); QVERIFY(!testWidget->isUndoAvailable()); int i; @@ -1170,6 +1184,7 @@ void tst_QLineEdit::redo() QFETCH(IntList, insertIndex); QFETCH(QStringList, expectedString); + QLineEdit *testWidget = ensureTestWidget(); QVERIFY(!testWidget->isUndoAvailable()); QVERIFY(!testWidget->isRedoAvailable()); @@ -1439,6 +1454,7 @@ void tst_QLineEdit::undo_keypressevents() QFETCH(QTestEventList, keys); QFETCH(QStringList, expectedString); + QLineEdit *testWidget = ensureTestWidget(); keys.simulate(testWidget); for (int i=0; i<expectedString.size(); ++i) { @@ -1483,6 +1499,7 @@ void tst_QLineEdit::QTBUG5786_undoPaste() void tst_QLineEdit::clear() { // checking that clear of empty/nullstring doesn't add to undo history + QLineEdit *testWidget = ensureTestWidget(); int max = 5000; while (max > 0 && testWidget->isUndoAvailable()) { max--; @@ -1504,7 +1521,7 @@ void tst_QLineEdit::clear() void tst_QLineEdit::editingFinished() { - if (testWidget->hasAcceptableInput()) + if (m_testWidget->hasAcceptableInput()) validInput = true; else validInput = false; @@ -1526,6 +1543,7 @@ void tst_QLineEdit::text_data() void tst_QLineEdit::text() { QFETCH(QString, insertString); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText(insertString); QCOMPARE(testWidget->text(), insertString); } @@ -1540,6 +1558,7 @@ void tst_QLineEdit::textMask_data() void tst_QLineEdit::textMask() { QFETCH( QString, insertString ); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMask( "#" ); testWidget->setText( insertString ); QCOMPARE( testWidget->text(), insertString ); @@ -1547,6 +1566,7 @@ void tst_QLineEdit::textMask() void tst_QLineEdit::setText() { + QLineEdit *testWidget = ensureTestWidget(); QSignalSpy editedSpy(testWidget, SIGNAL(textEdited(QString))); QSignalSpy changedSpy(testWidget, SIGNAL(textChanged(QString))); testWidget->setText("hello"); @@ -1616,7 +1636,7 @@ void tst_QLineEdit::displayText_data() m << bool(use_setText); s = key_mode_str + "Password"; m = QLineEdit::Password; - QChar passChar = qApp->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, 0, testWidget); + QChar passChar = qApp->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, 0, m_testWidget); QString input; QString pass; input = "Hello World"; @@ -1648,6 +1668,7 @@ void tst_QLineEdit::displayText() QFETCH(QLineEdit::EchoMode, mode); //QFETCH(bool, use_setText); Currently unused. + QLineEdit *testWidget = ensureTestWidget(); testWidget->setEchoMode(mode); testWidget->setText(insertString); QCOMPARE(testWidget->displayText(), expectedString); @@ -1657,11 +1678,15 @@ void tst_QLineEdit::displayText() void tst_QLineEdit::passwordEchoOnEdit() { QStyleOptionFrameV2 opt; + QLineEdit *testWidget = ensureTestWidget(); QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit); testWidget->setFocus(); + centerOnScreen(testWidget); + testWidget->show(); testWidget->raise(); + QVERIFY(QTest::qWaitForWindowExposed(testWidget)); QTRY_VERIFY(testWidget->hasFocus()); QTest::keyPress(testWidget, '0'); @@ -1686,6 +1711,7 @@ void tst_QLineEdit::passwordEchoOnEdit() void tst_QLineEdit::passwordEchoDelay() { + QLineEdit *testWidget = ensureTestWidget(); int delay = qGuiApp->styleHints()->passwordMaskDelay(); #if defined QT_BUILD_INTERNAL QLineEditPrivate *priv = QLineEditPrivate::get(testWidget); @@ -1701,7 +1727,10 @@ void tst_QLineEdit::passwordEchoDelay() testWidget->setEchoMode(QLineEdit::Password); testWidget->setFocus(); + centerOnScreen(testWidget); + testWidget->show(); testWidget->raise(); + QVERIFY(QTest::qWaitForWindowExposed(testWidget)); QTRY_VERIFY(testWidget->hasFocus()); QTest::keyPress(testWidget, '0'); @@ -1760,6 +1789,7 @@ void tst_QLineEdit::maxLength_mask() QFETCH(QString, mask); QFETCH(int, expectedLength); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMask(mask); QCOMPARE(testWidget->maxLength(), expectedLength); @@ -1792,6 +1822,7 @@ void tst_QLineEdit::maxLength() QFETCH(bool, use_setText); // in some cases we set the maxLength _before_ entering the text. + QLineEdit *testWidget = ensureTestWidget(); if (!insertBeforeSettingMaxLength) testWidget->setMaxLength(length); @@ -1823,6 +1854,7 @@ void tst_QLineEdit::maxLength() void tst_QLineEdit::isReadOnly() { + QLineEdit *testWidget = ensureTestWidget(); QVERIFY(!testWidget->isReadOnly()); // start with a basic text @@ -1866,6 +1898,7 @@ void tst_QLineEdit::noCursorBlinkWhenReadOnly() if (cursorFlashTime == 0) return; BlinkTestLineEdit le; + centerOnScreen(&le); le.show(); le.setFocus(); QTest::qWaitForWindowActive(&le); @@ -1931,6 +1964,7 @@ void tst_QLineEdit::psKeyClick(QTestEventList &keys, Qt::Key key, Qt::KeyboardMo void tst_QLineEdit::cursorPosition() { + QLineEdit *testWidget = ensureTestWidget(); QVERIFY(testWidget->cursorPosition() == 0); // start with a basic text @@ -2018,7 +2052,7 @@ void tst_QLineEdit::cursorPositionChanged_data() QTestEventList keys; keys.addKeyClick(Qt::Key_A); - QTest::newRow("a") << keys << 0 << 1; + QTest::newRow("a") << keys << -1 << 1; keys.clear(); keys.addKeyClick(Qt::Key_A); @@ -2149,6 +2183,7 @@ void tst_QLineEdit::cursorPositionChanged() lastCursorPos = 0; newCursorPos = 0; + QLineEdit *testWidget = ensureTestWidget(); input.simulate(testWidget); QCOMPARE(lastCursorPos, lastPos); QCOMPARE(newCursorPos, newPos); @@ -2159,6 +2194,7 @@ void tst_QLineEdit::selectedText() QString testString = "Abc defg hijklmno, p 'qrst' uvw xyz"; // start with a basic text + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText(testString); selection_count = 0; @@ -2228,6 +2264,7 @@ void tst_QLineEdit::textChangedAndTextEdited() changed_count = 0; edited_count = 0; + QLineEdit *testWidget = ensureTestWidget(); QTest::keyClick(testWidget, Qt::Key_A); QCOMPARE(changed_count, 1); QVERIFY(edited_count == changed_count); @@ -2286,6 +2323,7 @@ void tst_QLineEdit::returnPressed() { return_count = 0; + QLineEdit *testWidget = ensureTestWidget(); QTest::keyClick(testWidget, Qt::Key_Return); QVERIFY(return_count == 1); return_count = 0; @@ -2434,6 +2472,7 @@ void tst_QLineEdit::returnPressed_maskvalidator() QFETCH(bool, returnPressed); QEXPECT_FAIL("mask '999', intfix validator(0,999), input '12<cr>'", "QIntValidator has changed behaviour. Does not accept spaces. Task 43082.", Abort); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMask(inputMask); if (hasValidator) @@ -2454,6 +2493,7 @@ void tst_QLineEdit::onReturnPressed() void tst_QLineEdit::setValidator() { // Verify that we can set and re-set a validator. + QLineEdit *testWidget = ensureTestWidget(); QVERIFY(!testWidget->validator()); QIntValidator iv1(0); @@ -2604,6 +2644,7 @@ void tst_QLineEdit::setValidator_QIntValidator() QFETCH(bool, is_valid); QIntValidator intValidator(mini, maxi, 0); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setValidator(&intValidator); QVERIFY(testWidget->text().isEmpty()); //qDebug("1 input: '" + input + "' Exp: '" + expectedText + "'"); @@ -2640,6 +2681,7 @@ void tst_QLineEdit::frame_data() void tst_QLineEdit::frame() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setFrame(false); // verify that the editor is shown without a frame #ifndef NO_PIXMAP_TESTS @@ -2677,6 +2719,7 @@ void tst_QLineEdit::setAlignment_data() void tst_QLineEdit::setAlignment() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText("left"); testWidget->setAlignment(Qt::AlignLeft); #ifndef NO_PIXMAP_TESTS @@ -2716,6 +2759,7 @@ void tst_QLineEdit::setAlignment() void tst_QLineEdit::isModified() { + QLineEdit *testWidget = ensureTestWidget(); QVERIFY(!testWidget->isModified()); testWidget->setText("bla"); QVERIFY(!testWidget->isModified()); @@ -2750,6 +2794,7 @@ void tst_QLineEdit::isModified() void tst_QLineEdit::edited() { + QLineEdit *testWidget = ensureTestWidget(); QVERIFY(!testWidget->isModified()); testWidget->setText("bla"); QVERIFY(!testWidget->isModified()); @@ -2781,6 +2826,7 @@ void tst_QLineEdit::edited() void tst_QLineEdit::insert() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->insert("This"); testWidget->insert(" is"); testWidget->insert(" a"); @@ -2857,6 +2903,7 @@ void tst_QLineEdit::setSelection() QFETCH(QString, expectedText); QFETCH(bool, expectedHasSelectedText); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText(text); testWidget->setSelection(start, length); QCOMPARE(testWidget->hasSelectedText(), expectedHasSelectedText); @@ -2872,6 +2919,7 @@ void tst_QLineEdit::cut() QSKIP("Autotests run from cron and pasteboard don't get along quite ATM"); // test newlines in cut'n'paste + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText("A\nB\nC\n"); testWidget->setSelection(0, 6); testWidget->cut(); @@ -2967,6 +3015,7 @@ void tst_QLineEdit::inputMaskAndValidator() QFETCH(QString, validateText); QFETCH(int, validatePos); + QLineEdit *testWidget = ensureTestWidget(); InputMaskValidator imv(testWidget); testWidget->setValidator(&imv); @@ -2980,6 +3029,7 @@ void tst_QLineEdit::inputMaskAndValidator() void tst_QLineEdit::maxLengthAndInputMask() { // Really a test for #30447 + QLineEdit *testWidget = ensureTestWidget(); QVERIFY(testWidget->inputMask().isNull()); testWidget->setMaxLength(10); QVERIFY(testWidget->maxLength() == 10); @@ -3019,6 +3069,7 @@ Q_DECLARE_METATYPE(LineEdit::State); void tst_QLineEdit::returnPressedKeyEvent() { LineEdit lineedit; + centerOnScreen(&lineedit); lineedit.show(); QCOMPARE((int)lineedit.state, (int)LineEdit::Other); QTest::keyClick(&lineedit, Qt::Key_Enter); @@ -3035,6 +3086,7 @@ void tst_QLineEdit::returnPressedKeyEvent() void tst_QLineEdit::keepSelectionOnTabFocusIn() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText("hello world"); { QFocusEvent e(QEvent::FocusIn, Qt::TabFocusReason); @@ -3052,6 +3104,7 @@ void tst_QLineEdit::keepSelectionOnTabFocusIn() void tst_QLineEdit::readOnlyStyleOption() { + QLineEdit *testWidget = ensureTestWidget(); bool wasReadOnly = testWidget->isReadOnly(); QStyle *oldStyle = testWidget->style(); @@ -3074,6 +3127,7 @@ void tst_QLineEdit::readOnlyStyleOption() void tst_QLineEdit::validateOnFocusOut() { + QLineEdit *testWidget = ensureTestWidget(); QSignalSpy editingFinishedSpy(testWidget, SIGNAL(editingFinished())); testWidget->setValidator(new QIntValidator(100, 999, 0)); QTest::keyPress(testWidget, '1'); @@ -3083,8 +3137,11 @@ void tst_QLineEdit::validateOnFocusOut() QCOMPARE(editingFinishedSpy.count(), 0); testWidget->setFocus(); + centerOnScreen(testWidget); + testWidget->show(); testWidget->activateWindow(); - QTRY_VERIFY(testWidget->hasFocus()); + QVERIFY(QTest::qWaitForWindowActive(testWidget)); + QVERIFY(testWidget->hasFocus()); QTest::keyPress(testWidget, '0'); QTRY_COMPARE(testWidget->text(), QString("100")); @@ -3095,6 +3152,7 @@ void tst_QLineEdit::validateOnFocusOut() void tst_QLineEdit::editInvalidText() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->clear(); testWidget->setValidator(new QIntValidator(0, 120, 0)); testWidget->setText("1234"); @@ -3122,6 +3180,7 @@ void tst_QLineEdit::editInvalidText() void tst_QLineEdit::charWithAltOrCtrlModifier() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->clear(); QCOMPARE(testWidget->text(), QString("")); QTest::keyPress(testWidget, Qt::Key_Plus); @@ -3136,6 +3195,7 @@ void tst_QLineEdit::charWithAltOrCtrlModifier() void tst_QLineEdit::leftKeyOnSelectedText() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->clear(); testWidget->setText("0123"); testWidget->setCursorPosition(4); @@ -3158,6 +3218,7 @@ void tst_QLineEdit::leftKeyOnSelectedText() void tst_QLineEdit::inlineCompletion() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->clear(); QStandardItemModel *model = new QStandardItemModel; QStandardItem *root = model->invisibleRootItem(); @@ -3172,6 +3233,9 @@ void tst_QLineEdit::inlineCompletion() QCompleter *completer = new QCompleter(model); completer->setCompletionMode(QCompleter::InlineCompletion); completer->setCaseSensitivity(Qt::CaseInsensitive); + centerOnScreen(testWidget); + testWidget->show(); + QTest::qWaitForWindowExposed(testWidget); testWidget->setFocus(); QTRY_COMPARE(qApp->activeWindow(), (QWidget*)testWidget); testWidget->setCompleter(completer); @@ -3238,6 +3302,7 @@ void tst_QLineEdit::inlineCompletion() void tst_QLineEdit::noTextEditedOnClear() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText("Test"); QSignalSpy textEditedSpy(testWidget, SIGNAL(textEdited(QString))); testWidget->clear(); @@ -3301,6 +3366,7 @@ void tst_QLineEdit::textMargin() sizeHint.setHeight(sizeHint.height() + top +bottom); QCOMPARE(testWidget.sizeHint(), sizeHint); testWidget.setFrame(false); + centerOnScreen(&tlw); tlw.show(); int l; @@ -3320,6 +3386,7 @@ void tst_QLineEdit::textMargin() #ifndef QTEST_NO_CURSOR void tst_QLineEdit::cursor() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setReadOnly(false); QCOMPARE(testWidget->cursor().shape(), Qt::IBeamCursor); testWidget->setReadOnly(true); @@ -3559,12 +3626,16 @@ void tst_QLineEdit::task233101_cursorPosAfterInputMethod() void tst_QLineEdit::task241436_passwordEchoOnEditRestoreEchoMode() { QStyleOptionFrameV2 opt; + QLineEdit *testWidget = ensureTestWidget(); QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit); testWidget->setFocus(); + centerOnScreen(testWidget); + testWidget->show(); QApplication::setActiveWindow(testWidget); - QTRY_VERIFY(testWidget->hasFocus()); + QVERIFY(QTest::qWaitForWindowActive(testWidget)); + QVERIFY(testWidget->hasFocus()); QTest::keyPress(testWidget, '0'); QCOMPARE(testWidget->displayText(), QString("0")); @@ -3588,6 +3659,7 @@ void tst_QLineEdit::task241436_passwordEchoOnEditRestoreEchoMode() void tst_QLineEdit::task248948_redoRemovedSelection() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText("a"); testWidget->selectAll(); QTest::keyPress(testWidget, Qt::Key_Delete); @@ -3602,12 +3674,15 @@ void tst_QLineEdit::taskQTBUG_4401_enterKeyClearsPassword() { QString password("Wanna guess?"); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText(password); testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit); testWidget->setFocus(); testWidget->selectAll(); + centerOnScreen(testWidget); + testWidget->show(); QApplication::setActiveWindow(testWidget); - QTRY_VERIFY(testWidget->hasFocus()); + QVERIFY(QTest::qWaitForWindowActive(testWidget)); QTest::keyPress(testWidget, Qt::Key_Enter); QTRY_COMPARE(testWidget->text(), password); @@ -3617,6 +3692,7 @@ void tst_QLineEdit::taskQTBUG_4679_moveToStartEndOfBlock() { #ifdef Q_OS_MAC const QString text("there are no blocks for lineEdit"); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText(text); testWidget->setCursorPosition(5); QCOMPARE(testWidget->cursorPosition(), 5); @@ -3632,6 +3708,7 @@ void tst_QLineEdit::taskQTBUG_4679_selectToStartEndOfBlock() { #ifdef Q_OS_MAC const QString text("there are no blocks for lineEdit, select all"); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText(text); testWidget->setCursorPosition(5); QCOMPARE(testWidget->cursorPosition(), 5); @@ -3901,6 +3978,7 @@ void tst_QLineEdit::bidiLogicalMovement() void tst_QLineEdit::selectAndCursorPosition() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText("This is a long piece of text"); testWidget->setSelection(0, 5); @@ -3911,6 +3989,10 @@ void tst_QLineEdit::selectAndCursorPosition() void tst_QLineEdit::inputMethod() { + QLineEdit *testWidget = ensureTestWidget(); + centerOnScreen(testWidget); + testWidget->show(); + QVERIFY(QTest::qWaitForWindowExposed(testWidget)); // widget accepts input QInputMethodQueryEvent queryEvent(Qt::ImEnabled); QApplication::sendEvent(testWidget, &queryEvent); @@ -3945,6 +4027,7 @@ void tst_QLineEdit::inputMethod() void tst_QLineEdit::inputMethodSelection() { + QLineEdit *testWidget = ensureTestWidget(); testWidget->setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit."); testWidget->setSelection(0,0); QSignalSpy selectionSpy(testWidget, SIGNAL(selectionChanged())); @@ -3992,6 +4075,7 @@ void tst_QLineEdit::inputMethodQueryImHints_data() void tst_QLineEdit::inputMethodQueryImHints() { QFETCH(Qt::InputMethodHints, hints); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setInputMethodHints(hints); QVariant value = testWidget->inputMethodQuery(Qt::ImHints); @@ -4034,7 +4118,7 @@ void tst_QLineEdit::undoRedoAndEchoModes() QFETCH(QStringList, expected); // create some history for the QLineEdit - testWidget->clear(); + QLineEdit *testWidget = ensureTestWidget(); testWidget->setEchoMode(QLineEdit::EchoMode(echoMode)); testWidget->insert(input.at(0)); testWidget->selectAll(); |