aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/declarative')
-rw-r--r--tests/auto/declarative/qquicktextedit/tst_qquicktextedit.cpp33
-rw-r--r--tests/auto/declarative/qquicktextinput/tst_qquicktextinput.cpp31
2 files changed, 47 insertions, 17 deletions
diff --git a/tests/auto/declarative/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/declarative/qquicktextedit/tst_qquicktextedit.cpp
index 9efb73409a..ca585a48ce 100644
--- a/tests/auto/declarative/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/declarative/qquicktextedit/tst_qquicktextedit.cpp
@@ -2320,24 +2320,39 @@ void tst_qquicktextedit::inputMethodComposing()
void tst_qquicktextedit::cursorRectangleSize()
{
- QQuickView *canvas = new QQuickView(QUrl::fromLocalFile(TESTDATA("CursorRect.qml")));
+ QQuickView *canvas = new QQuickView(QUrl::fromLocalFile(TESTDATA("positionAt.qml")));
QVERIFY(canvas->rootObject() != 0);
+ QQuickTextEdit *textEdit = qobject_cast<QQuickTextEdit *>(canvas->rootObject());
+
+ // make sure cursor rectangle is not at (0,0)
+ textEdit->setX(10);
+ textEdit->setY(10);
+ textEdit->setCursorPosition(3);
+ QVERIFY(textEdit != 0);
+ textEdit->setFocus(true);
canvas->show();
canvas->requestActivateWindow();
QTest::qWaitForWindowShown(canvas);
- QQuickTextEdit *textEdit = qobject_cast<QQuickTextEdit *>(canvas->rootObject());
- QVERIFY(textEdit != 0);
- textEdit->setFocus(Qt::OtherFocusReason);
- QRectF cursorRect = textEdit->positionToRectangle(textEdit->cursorPosition());
- QRectF microFocusFromScene = canvas->inputMethodQuery(Qt::ImCursorRectangle).toRectF();
QInputMethodQueryEvent event(Qt::ImCursorRectangle);
qApp->sendEvent(qApp->inputPanel()->inputItem(), &event);
+ QRectF cursorRectFromQuery = event.value(Qt::ImCursorRectangle).toRectF();
+
+ QRect cursorRectFromItem = textEdit->cursorRectangle();
+ QRectF cursorRectFromPositionToRectangle = textEdit->positionToRectangle(textEdit->cursorPosition());
+
+ // item and input query cursor rectangles match
+ QCOMPARE(cursorRectFromItem, cursorRectFromQuery.toRect());
+
+ // item cursor rectangle and positionToRectangle calculations match
+ QCOMPARE(cursorRectFromItem, cursorRectFromPositionToRectangle.toRect());
- QRectF microFocusFromApp = event.value(Qt::ImCursorRectangle).toRectF();
+ // item-canvas transform and input item transform match
+ QCOMPARE(QQuickItemPrivate::get(textEdit)->itemToCanvasTransform(), qApp->inputPanel()->inputItemTransform());
- QCOMPARE(microFocusFromScene.size(), cursorRect.size());
- QCOMPARE(microFocusFromApp.size(), cursorRect.size());
+ // input panel cursorRectangle property and tranformed item cursor rectangle match
+ QRectF sceneCursorRect = QQuickItemPrivate::get(textEdit)->itemToCanvasTransform().mapRect(cursorRectFromItem);
+ QCOMPARE(sceneCursorRect, qApp->inputPanel()->cursorRectangle());
delete canvas;
}
diff --git a/tests/auto/declarative/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/declarative/qquicktextinput/tst_qquicktextinput.cpp
index 434c63a779..7c794d6e97 100644
--- a/tests/auto/declarative/qquicktextinput/tst_qquicktextinput.cpp
+++ b/tests/auto/declarative/qquicktextinput/tst_qquicktextinput.cpp
@@ -2553,22 +2553,37 @@ void tst_qquicktextinput::cursorRectangleSize()
{
QQuickView *canvas = new QQuickView(QUrl::fromLocalFile(TESTDATA("positionAt.qml")));
QVERIFY(canvas->rootObject() != 0);
+ QQuickTextInput *textInput = qobject_cast<QQuickTextInput *>(canvas->rootObject());
+
+ // make sure cursor rectangle is not at (0,0)
+ textInput->setX(10);
+ textInput->setY(10);
+ textInput->setCursorPosition(3);
+ QVERIFY(textInput != 0);
+ textInput->setFocus(true);
canvas->show();
canvas->requestActivateWindow();
QTest::qWaitForWindowShown(canvas);
- QQuickTextInput *textInput = qobject_cast<QQuickTextInput *>(canvas->rootObject());
- QVERIFY(textInput != 0);
- textInput->setFocus(Qt::OtherFocusReason);
- QRectF cursorRect = textInput->positionToRectangle(textInput->cursorPosition());
- QRectF microFocusFromScene = canvas->inputMethodQuery(Qt::ImCursorRectangle).toRectF();
QInputMethodQueryEvent event(Qt::ImCursorRectangle);
qApp->sendEvent(qApp->inputPanel()->inputItem(), &event);
+ QRectF cursorRectFromQuery = event.value(Qt::ImCursorRectangle).toRectF();
+
+ QRect cursorRectFromItem = textInput->cursorRectangle();
+ QRectF cursorRectFromPositionToRectangle = textInput->positionToRectangle(textInput->cursorPosition());
+
+ // item and input query cursor rectangles match
+ QCOMPARE(cursorRectFromItem, cursorRectFromQuery.toRect());
+
+ // item cursor rectangle and positionToRectangle calculations match
+ QCOMPARE(cursorRectFromItem, cursorRectFromPositionToRectangle.toRect());
- QRectF microFocusFromApp = event.value(Qt::ImCursorRectangle).toRectF();
+ // item-canvas transform and input item transform match
+ QCOMPARE(QQuickItemPrivate::get(textInput)->itemToCanvasTransform(), qApp->inputPanel()->inputItemTransform());
- QCOMPARE(microFocusFromScene.size(), cursorRect.size());
- QCOMPARE(microFocusFromApp.size(), cursorRect.size());
+ // input panel cursorRectangle property and tranformed item cursor rectangle match
+ QRectF sceneCursorRect = QQuickItemPrivate::get(textInput)->itemToCanvasTransform().mapRect(cursorRectFromItem);
+ QCOMPARE(sceneCursorRect, qApp->inputPanel()->cursorRectangle());
delete canvas;
}