diff options
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 5 | ||||
-rw-r--r-- | tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index a83b9beaa5..cd4f2eebc6 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -1140,7 +1140,10 @@ QString QQuickTextInput::inputMask() const void QQuickTextInput::setInputMask(const QString &im) { Q_D(QQuickTextInput); - if (d->inputMask() == im) + QString canonicalInputMask = im; + if (im.lastIndexOf(QLatin1Char(';')) == -1) + canonicalInputMask.append(QLatin1String("; ")); + if (d->inputMask() == canonicalInputMask) return; d->setInputMask(im); diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp index cab4e1145f..6f24ca8ded 100644 --- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp +++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp @@ -6411,6 +6411,14 @@ void tst_qquicktextinput::setInputMask() QQuickTextInput *textInput = qobject_cast<QQuickTextInput*>(textInputComponent.create()); QVERIFY(textInput != nullptr); + // [QTBUG-80190] check if setting the same property value again doesn't emit an + // inputMaskChanged signal + QString unescapedMask = mask; // mask is escaped, because '\' is also escape in a JS string + unescapedMask.replace(QLatin1String("\\\\"), QLatin1String("\\")); // simple unescape + QSignalSpy spy(textInput, SIGNAL(inputMaskChanged(const QString &))); + textInput->setInputMask(unescapedMask); + QCOMPARE(spy.count(), 0); + // then either insert using insert() or keyboard if (insert_text) { textInput->insert(0, input); |