aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp')
-rw-r--r--tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp52
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();