Move the cursor position to the end when TextInput.readOnly is cleared.
authorAndrew den Exter <andrew.den-exter@nokia.com>
Tue, 26 Jul 2011 00:10:50 +0000 (10:10 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 26 Jul 2011 04:29:54 +0000 (06:29 +0200)
Improves consistency with TextEdit.

Task-number: QTBUG-18747
Change-Id: Ieb0a332441557fc6ba4c5ddaafea5c634aff1ee4
Reviewed-on: http://codereview.qt.nokia.com/2131
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Martin Jones <martin.jones@nokia.com>
src/declarative/items/qsgtextinput.cpp
tests/auto/declarative/qsgtextedit/tst_qsgtextedit.cpp
tests/auto/declarative/qsgtextinput/tst_qsgtextinput.cpp

index e73237e..fe70705 100644 (file)
@@ -264,6 +264,8 @@ void QSGTextInput::setReadOnly(bool ro)
 
     setFlag(QSGItem::ItemAcceptsInputMethod, !ro);
     d->control->setReadOnly(ro);
+    if (!ro)
+        d->control->setCursorPosition(d->control->end());
 
     emit readOnlyChanged(ro);
 }
index 409af72..3492ac2 100644 (file)
@@ -1785,6 +1785,11 @@ void tst_qsgtextedit::readOnly()
     simulateKey(&canvas, Qt::Key_Space);
     simulateKey(&canvas, Qt::Key_Escape);
     QCOMPARE(edit->text(), initial);
+
+    edit->setCursorPosition(3);
+    edit->setReadOnly(false);
+    QCOMPARE(edit->isReadOnly(), false);
+    QCOMPARE(edit->cursorPosition(), edit->text().length());
 }
 
 void tst_qsgtextedit::simulateKey(QSGView *view, int key, Qt::KeyboardModifiers modifiers)
index c6c93c1..497c12f 100644 (file)
@@ -1767,6 +1767,11 @@ void tst_qsgtextinput::readOnly()
     simulateKey(&canvas, Qt::Key_Space);
     simulateKey(&canvas, Qt::Key_Escape);
     QCOMPARE(input->text(), initial);
+
+    input->setCursorPosition(3);
+    input->setReadOnly(false);
+    QCOMPARE(input->isReadOnly(), false);
+    QCOMPARE(input->cursorPosition(), input->text().length());
 }
 
 void tst_qsgtextinput::echoMode()