aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquicktextinput.cpp5
-rw-r--r--tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp11
2 files changed, 15 insertions, 1 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index 37b103613d..37e94cddc0 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -2303,12 +2303,15 @@ void QQuickTextInput::resetPasswordMaskDelay()
this property holds the text visible to the user, while
the \l text property holds the actual entered text.
+ \note Unlike the TextInput::text property, this contains
+ partial text input from an input method.
+
\readonly
*/
QString QQuickTextInput::displayText() const
{
Q_D(const QQuickTextInput);
- return d->m_textLayout.text();
+ return d->m_textLayout.text().insert(d->m_textLayout.preeditAreaPosition(), d->m_textLayout.preeditAreaText());
}
/*!
diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
index e5ef83ba32..c50923b32f 100644
--- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
+++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
@@ -2234,25 +2234,34 @@ void tst_qquicktextinput::inputMethods()
QTRY_COMPARE(qGuiApp->focusObject(), input);
QGuiApplication::sendEvent(input, &event);
QCOMPARE(input->text(), QString("My Hello world!"));
+ QCOMPARE(input->displayText(), QString("My Hello world!"));
input->setCursorPosition(2);
event.setCommitString("Your", -2, 2);
QGuiApplication::sendEvent(input, &event);
QCOMPARE(input->text(), QString("Your Hello world!"));
+ QCOMPARE(input->displayText(), QString("Your Hello world!"));
QCOMPARE(input->cursorPosition(), 4);
input->setCursorPosition(7);
event.setCommitString("Goodbye", -2, 5);
QGuiApplication::sendEvent(input, &event);
QCOMPARE(input->text(), QString("Your Goodbye world!"));
+ QCOMPARE(input->displayText(), QString("Your Goodbye world!"));
QCOMPARE(input->cursorPosition(), 12);
input->setCursorPosition(8);
event.setCommitString("Our", -8, 4);
QGuiApplication::sendEvent(input, &event);
QCOMPARE(input->text(), QString("Our Goodbye world!"));
+ QCOMPARE(input->displayText(), QString("Our Goodbye world!"));
QCOMPARE(input->cursorPosition(), 7);
+ QInputMethodEvent preeditEvent("PREEDIT", QList<QInputMethodEvent::Attribute>());
+ QGuiApplication::sendEvent(input, &preeditEvent);
+ QCOMPARE(input->text(), QString("Our Goodbye world!"));
+ QCOMPARE(input->displayText(), QString("Our GooPREEDITdbye world!"));
+
// input should reset selection even if replacement parameters are out of bounds
input->setText("text");
input->setCursorPosition(0);
@@ -2260,6 +2269,8 @@ void tst_qquicktextinput::inputMethods()
event.setCommitString("replacement", -input->text().length(), input->text().length());
QGuiApplication::sendEvent(input, &event);
QCOMPARE(input->selectionStart(), input->selectionEnd());
+ QCOMPARE(input->text(), QString("replacement"));
+ QCOMPARE(input->displayText(), QString("replacement"));
QInputMethodQueryEvent enabledQueryEvent(Qt::ImEnabled);
QGuiApplication::sendEvent(input, &enabledQueryEvent);