From: Andrew den Exter Date: Fri, 27 Apr 2012 01:06:12 +0000 (+1000) Subject: Propagate left key presses to the parent item when TextInput is empty. X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=a7017465152d544a4217d5ce4f6f84b80cb9b8b9;p=konrad%2Fqtdeclarative.git Propagate left key presses to the parent item when TextInput is empty. Don't overwrite the ignore value once it's been set to true. Task-number: QTBUG-25447 Change-Id: I7284147bc525d0971564570f0dd0599cec190905 Reviewed-by: Yann Bodson --- diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index b21843e..8637294 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -1382,7 +1382,7 @@ void QQuickTextInput::keyPressEvent(QKeyEvent* ev) 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) { diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp index 4cebc3e..1a5f52f 100644 --- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp +++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp @@ -2172,7 +2172,7 @@ void tst_qquicktextedit::navigation() QVERIFY(canvas.rootObject() != 0); - QQuickItem *input = qobject_cast(qvariant_cast(canvas.rootObject()->property("myInput"))); + QQuickTextEdit *input = qobject_cast(qvariant_cast(canvas.rootObject()->property("myInput"))); QVERIFY(input != 0); QTRY_VERIFY(input->hasActiveFocus() == true); @@ -2186,6 +2186,16 @@ void tst_qquicktextedit::navigation() 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() { diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp index ab664ae..6f75698 100644 --- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp +++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp @@ -2079,6 +2079,16 @@ void tst_qquicktextinput::navigation() 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()