summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/widgets/qlineedit.cpp2
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol_p.h5
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp13
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"