diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2011-07-25 16:58:46 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-07-28 11:02:16 +0200 |
commit | 4f59b5b5308011fdc4bb08bc179d5298077fd9ad (patch) | |
tree | 524fb6b07d89c5ecc4c76cbe27c365e077d70ebc /tests/auto/qlineedit/tst_qlineedit.cpp | |
parent | a7860d8bf18d1330718fd0dfdc694c92ec69f069 (diff) |
Emit selectionChanged signals when input method alters selection.
Mark the selection as dirty if an input method event contains a
selection and emit selectionChanged() if it's not emitted by
finishChange().
Task-number: QTBUG-19731
Change-Id: Ief6f06f40071f64dae4db0ba365676c059a39c7e
Reviewed-on: http://codereview.qt.nokia.com/2081
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Diffstat (limited to 'tests/auto/qlineedit/tst_qlineedit.cpp')
-rw-r--r-- | tests/auto/qlineedit/tst_qlineedit.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp index 72b402f69d..68e88a87ed 100644 --- a/tests/auto/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/qlineedit/tst_qlineedit.cpp @@ -290,6 +290,7 @@ private slots: void bidiLogicalMovement(); void selectAndCursorPosition(); + void inputMethodSelection(); protected slots: void editingFinished(); @@ -3883,5 +3884,28 @@ void tst_QLineEdit::selectAndCursorPosition() QCOMPARE(testWidget->cursorPosition(), 0); } +void tst_QLineEdit::inputMethodSelection() +{ + testWidget->setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit."); + testWidget->setSelection(0,0); + QSignalSpy selectionSpy(testWidget, SIGNAL(selectionChanged())); + + QCOMPARE(selectionSpy.count(), 0); + QCOMPARE(testWidget->selectionStart(), -1); + + testWidget->setSelection(0,5); + + QCOMPARE(selectionSpy.count(), 1); + QCOMPARE(testWidget->selectionStart(), 0); + + QList<QInputMethodEvent::Attribute> attributes; + attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 12, 5, QVariant()); + QInputMethodEvent event("", attributes); + QApplication::sendEvent(testWidget, &event); + + QCOMPARE(selectionSpy.count(), 2); + QCOMPARE(testWidget->selectionStart(), 12); +} + QTEST_MAIN(tst_QLineEdit) #include "tst_qlineedit.moc" |