emit readOnlyChanged(r);
if (!d->selectByKeyboardSet)
emit selectByKeyboardChanged(!r);
+ if (r) {
+ setCursorVisible(false);
+ } else if (hasActiveFocus()) {
+ setCursorVisible(true);
+ }
}
bool QQuickTextEdit::isReadOnly() const
std::sort(d->textNodeMap.begin(), d->textNodeMap.end(), &comesBefore);
}
- if (d->cursorComponent == 0 && !isReadOnly()) {
+ if (d->cursorComponent == 0) {
QSGRectangleNode* cursor = 0;
- if (d->cursorVisible && d->control->cursorOn())
+ if (!isReadOnly() && d->cursorVisible && d->control->cursorOn())
cursor = d->sceneGraphContext()->createRectangleNode(d->control->cursorRect(), d->color);
rootNode->resetCursorNode(cursor);
}
{
Q_Q(QQuickTextEdit);
bool focus = event->type() == QEvent::FocusIn;
- q->setCursorVisible(focus);
+ if (!q->isReadOnly())
+ q->setCursorVisible(focus);
control->processEvent(event, QPointF(-xoff, -yoff));
if (focus) {
q->q_updateAlignment();
q_canPasteChanged();
d->emitUndoRedoChanged();
emit readOnlyChanged(ro);
+ if (ro) {
+ setCursorVisible(false);
+ } else if (hasActiveFocus()) {
+ setCursorVisible(true);
+ }
+ update();
}
/*!
{
Q_Q(QQuickTextInput);
bool focus = event->gotFocus();
- q->setCursorVisible(focus);
+ if (!m_readOnly)
+ q->setCursorVisible(focus);
if (focus) {
q->q_updateAlignment();
#ifndef QT_NO_IM
QVERIFY(input != 0);
QTRY_VERIFY(input->hasActiveFocus() == true);
QVERIFY(input->isReadOnly() == true);
+ QVERIFY(input->isCursorVisible() == false);
QString initial = input->text();
for (int k=Qt::Key_0; k<=Qt::Key_Z; k++)
simulateKey(&window, k);
input->setReadOnly(false);
QCOMPARE(input->isReadOnly(), false);
QCOMPARE(input->cursorPosition(), input->text().length());
+ QVERIFY(input->isCursorVisible() == true);
}
void tst_qquicktextinput::echoMode()