diff options
-rw-r--r-- | src/widgets/widgets/qlineedit.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgetlinecontrol_p.h | 5 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 13 |
3 files changed, 19 insertions, 1 deletions
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 50eb1a7371..449a9c0b33 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1773,7 +1773,7 @@ QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property, QVariant arg return QVariant(d->xToPos(pt.x(), QTextLine::CursorBetweenCharacters)); return QVariant(d->control->cursor()); } case Qt::ImSurroundingText: - return QVariant(d->control->text()); + return QVariant(d->control->surroundingText()); case Qt::ImCurrentSelection: return QVariant(selectedText()); case Qt::ImMaximumTextLength: diff --git a/src/widgets/widgets/qwidgetlinecontrol_p.h b/src/widgets/widgets/qwidgetlinecontrol_p.h index b9340c0aff..257402e9dc 100644 --- a/src/widgets/widgets/qwidgetlinecontrol_p.h +++ b/src/widgets/widgets/qwidgetlinecontrol_p.h @@ -250,6 +250,11 @@ public: QString displayText() const { return m_textLayout.text(); } + QString surroundingText() const + { + return m_text.isNull() ? QString::fromLatin1("") : m_text; + } + void backspace(); void del(); void deselect() { internalDeselect(); finishChange(); } diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index b434e48500..8a17a4a327 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -313,6 +313,8 @@ private slots: void shortcutOverrideOnReadonlyLineEdit(); void QTBUG59957_clearButtonLeftmostAction(); + void QTBUG_60319_setInputMaskCheckImSurroundingText(); + protected slots: void editingFinished(); @@ -4696,5 +4698,16 @@ bool tst_QLineEdit::unselectingWithLeftOrRightChangesCursorPosition() return false; } +void tst_QLineEdit::QTBUG_60319_setInputMaskCheckImSurroundingText() +{ + QLineEdit *testWidget = ensureTestWidget(); + QString mask("+000(000)-000-00-00"); + testWidget->setInputMask(mask); + testWidget->setCursorPosition(mask.length()); + QString surroundingText = testWidget->inputMethodQuery(Qt::ImSurroundingText).toString(); + int cursorPosition = testWidget->inputMethodQuery(Qt::ImCursorPosition).toInt(); + QCOMPARE(surroundingText.length(), cursorPosition); +} + QTEST_MAIN(tst_QLineEdit) #include "tst_qlineedit.moc" |