Don't overwrite the ignore value once it's been set to true.
Task-number: QTBUG-25447
Change-Id: I7284147bc525d0971564570f0dd0599cec190905
Reviewed-by: Yann Bodson <yann.bodson@nokia.com>
int cursorPosition = d->m_cursor;
if (cursorPosition == 0)
ignore = ev->key() == (d->layoutDirection() == Qt::LeftToRight ? Qt::Key_Left : Qt::Key_Right);
- if (cursorPosition == text().length())
+ if (!ignore && cursorPosition == text().length())
ignore = ev->key() == (d->layoutDirection() == Qt::LeftToRight ? Qt::Key_Right : Qt::Key_Left);
}
if (ignore) {
QVERIFY(canvas.rootObject() != 0);
- QQuickItem *input = qobject_cast<QQuickItem *>(qvariant_cast<QObject *>(canvas.rootObject()->property("myInput")));
+ QQuickTextEdit *input = qobject_cast<QQuickTextEdit *>(qvariant_cast<QObject *>(canvas.rootObject()->property("myInput")));
QVERIFY(input != 0);
QTRY_VERIFY(input->hasActiveFocus() == true);
QVERIFY(input->hasActiveFocus() == false);
simulateKey(&canvas, Qt::Key_Left);
QVERIFY(input->hasActiveFocus() == true);
+
+ // Test left and right navigation works if the TextEdit is empty (QTBUG-25447).
+ input->setText(QString());
+ QCOMPARE(input->cursorPosition(), 0);
+ simulateKey(&canvas, Qt::Key_Right);
+ QCOMPARE(input->hasActiveFocus(), false);
+ simulateKey(&canvas, Qt::Key_Left);
+ QCOMPARE(input->hasActiveFocus(), true);
+ simulateKey(&canvas, Qt::Key_Left);
+ QCOMPARE(input->hasActiveFocus(), false);
}
void tst_qquicktextedit::copyAndPaste() {
QCOMPARE(input->cursorPosition(),2);
simulateKey(&canvas, Qt::Key_Down);
QCOMPARE(input->cursorPosition(),2);
+
+ // Test left and right navigation works if the TextInput is empty (QTBUG-25447).
+ input->setText(QString());
+ QCOMPARE(input->cursorPosition(), 0);
+ simulateKey(&canvas, Qt::Key_Right);
+ QCOMPARE(input->hasActiveFocus(), false);
+ simulateKey(&canvas, Qt::Key_Left);
+ QCOMPARE(input->hasActiveFocus(), true);
+ simulateKey(&canvas, Qt::Key_Left);
+ QCOMPARE(input->hasActiveFocus(), false);
}
void tst_qquicktextinput::navigation_RTL()