diff options
Diffstat (limited to 'tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp')
-rw-r--r-- | tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp index 267b9c10a0..8f8442544f 100644 --- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp +++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp @@ -1,10 +1,12 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + #include <qtest.h> #include <QtTest/QSignalSpy> #include <QtQuickTestUtils/private/qmlutils_p.h> #include <QtQuickTestUtils/private/testhttpserver_p.h> #include <QtQuickTestUtils/private/viewtestutils_p.h> +#include <QtQuickTestUtils/private/visualtestutils_p.h> #include <private/qinputmethod_p.h> #include <QtQml/qqmlengine.h> #include <QtQml/qqmlcomponent.h> @@ -212,7 +214,6 @@ private: #if QT_CONFIG(shortcut) void simulateKeys(QWindow *window, const QKeySequence &sequence); #endif - static bool hasWindowActivation(); QQmlEngine engine; QStringList standard; @@ -238,11 +239,6 @@ void tst_qquicktextinput::simulateKeys(QWindow *window, const QList<Key> &keys) } } -bool tst_qquicktextinput::hasWindowActivation() -{ - return (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)); -} - #if QT_CONFIG(shortcut) void tst_qquicktextinput::simulateKeys(QWindow *window, const QKeySequence &sequence) @@ -1877,7 +1873,7 @@ void tst_qquicktextinput::maxLength() QVERIFY(textinputObject != nullptr); QVERIFY(textinputObject->text().isEmpty()); QCOMPARE(textinputObject->maxLength(), 10); - foreach (const QString &str, standard) { + for (const QString &str : std::as_const(standard)) { QVERIFY(textinputObject->text().size() <= 10); textinputObject->setText(str); QVERIFY(textinputObject->text().size() <= 10); @@ -2757,15 +2753,18 @@ void tst_qquicktextinput::copyAndPasteKeySequence() #if QT_CONFIG(clipboard) && QT_CONFIG(shortcut) void tst_qquicktextinput::canPasteEmpty() { + if (!PlatformQuirks::isClipboardAvailable()) + QSKIP("This machine has no clipboard support."); + QGuiApplication::clipboard()->clear(); - QString componentStr = "import QtQuick 2.0\nTextInput { text: \"Hello world!\" }"; + const QString componentStr = "import QtQuick 2.0\nTextInput { text: \"Hello world!\" }"; QQmlComponent textInputComponent(&engine); textInputComponent.setData(componentStr.toLatin1(), QUrl()); QQuickTextInput *textInput = qobject_cast<QQuickTextInput*>(textInputComponent.create()); QVERIFY(textInput != nullptr); - bool cp = !textInput->isReadOnly() && QGuiApplication::clipboard()->text().size() != 0; + const bool cp = !textInput->isReadOnly() && QGuiApplication::clipboard()->text().size() != 0; QCOMPARE(textInput->canPaste(), cp); } #endif @@ -2773,15 +2772,18 @@ void tst_qquicktextinput::canPasteEmpty() #if QT_CONFIG(clipboard) && QT_CONFIG(shortcut) void tst_qquicktextinput::canPaste() { + if (!PlatformQuirks::isClipboardAvailable()) + QSKIP("This machine has no clipboard support."); + QGuiApplication::clipboard()->setText("Some text"); - QString componentStr = "import QtQuick 2.0\nTextInput { text: \"Hello world!\" }"; + const QString componentStr = "import QtQuick 2.0\nTextInput { text: \"Hello world!\" }"; QQmlComponent textInputComponent(&engine); textInputComponent.setData(componentStr.toLatin1(), QUrl()); QQuickTextInput *textInput = qobject_cast<QQuickTextInput*>(textInputComponent.create()); QVERIFY(textInput != nullptr); - bool cp = !textInput->isReadOnly() && QGuiApplication::clipboard()->text().size() != 0; + const bool cp = !textInput->isReadOnly() && QGuiApplication::clipboard()->text().size() != 0; QCOMPARE(textInput->canPaste(), cp); } #endif @@ -2790,7 +2792,7 @@ void tst_qquicktextinput::canPaste() void tst_qquicktextinput::middleClickPaste() { if (!PlatformQuirks::isClipboardAvailable()) - QSKIP("This machine doesn't support the clipboard"); + QSKIP("This machine has no clipboard support."); QQuickView window(testFileUrl("mouseselectionmode_default.qml")); @@ -2805,8 +2807,8 @@ void tst_qquicktextinput::middleClickPaste() textInputObject->setFocus(true); - QString originalText = textInputObject->text(); - QString selectedText = "234567"; + const QString originalText = textInputObject->text(); + const QString selectedText = "234567"; // press-and-drag-and-release from x1 to x2 const QPoint p1 = textInputObject->positionToRectangle(2).center().toPoint(); @@ -6427,7 +6429,7 @@ void tst_qquicktextinput::setInputMask() // inputMaskChanged signal QString unescapedMask = mask; // mask is escaped, because '\' is also escape in a JS string unescapedMask.replace(QLatin1String("\\\\"), QLatin1String("\\")); // simple unescape - QSignalSpy spy(textInput, SIGNAL(inputMaskChanged(const QString &))); + QSignalSpy spy(textInput, SIGNAL(inputMaskChanged(QString))); textInput->setInputMask(unescapedMask); QCOMPARE(spy.size(), 0); @@ -7176,12 +7178,26 @@ void tst_qquicktextinput::touchscreenDoesNotSelect() QTest::touchEvent(&window, touchscreen.data()).release(0, QPoint(x2,y), &window); QQuickTouchUtils::flush(&window); QVERIFY(textInputObject->selectedText().isEmpty()); + + // select all text (which moves the cursor to the end), then tap: + // with old API, it deselects, and moves the cursor (QTBUG-116606) + // with new API, it remains selected, and the cursor remains at the end + textInputObject->selectAll(); + const int cursorPos = textInputObject->cursorPosition(); + QTest::touchEvent(&window, touchscreen.data()).press(0, QPoint(x2,y), &window); + QTest::touchEvent(&window, touchscreen.data()).release(0, QPoint(x2,y), &window); + QQuickTouchUtils::flush(&window); + QCOMPARE(textInputObject->selectedText().isEmpty(), !expectDefaultSelectByMouse); + if (expectDefaultSelectByMouse) + QCOMPARE(textInputObject->cursorPosition(), cursorPos); + else + QCOMPARE_NE(textInputObject->cursorPosition(), cursorPos); } void tst_qquicktextinput::touchscreenSetsFocusAndMovesCursor() { - if (!hasWindowActivation()) - QSKIP("Window activation is not supported"); + SKIP_IF_NO_WINDOW_ACTIVATION + QQuickView window; QVERIFY(QQuickTest::showView(window, testFileUrl("twoInAColumn.qml"))); window.requestActivate(); |