diff options
author | Joona Petrell <joona.t.petrell@nokia.com> | 2011-11-18 13:19:09 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-24 10:33:29 +0100 |
commit | 5aad0f5da641d778958a4127f33cbd9943e6a6c5 (patch) | |
tree | 2a4f83a9df6235e95f193891b4f32478fda7119f /tests | |
parent | 296951a630d932f0834d26efb8912dc04cf79823 (diff) |
Get rid of unused inputMethodQuery and inputMethodEvent functions in QQuickCanvas
* in Qt5 input method events and queries are meant to be sent directly to
QInputPanel::inputItem() instead of the focused QWindow
* protected inputMethodEvent was actually never called by QWindow::event()
like it called other specialized event functions
Change-Id: I68cced106808098c320841d6a17a0cc170a8369f
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/declarative/qquicktextedit/tst_qquicktextedit.cpp | 33 | ||||
-rw-r--r-- | tests/auto/declarative/qquicktextinput/tst_qquicktextinput.cpp | 31 |
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; } |