From 70515726181a7e97e1a7096f6b63d4320581d5c1 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Tue, 27 Jun 2017 15:10:35 +0200 Subject: QLineEdit: Fix length calculation for input mask "\\\\" Consider the raw string \\\\. The previous algorithm would consider the last 3 \ to be escaped because the previous character is a \ and thus calculating a maxLength of 3. But this should be treated as two escaped \ with a maxLength of 2. Change-Id: I6c4b8d090a2e1c6e85195d5920ce8b80aea1bc2d Reviewed-by: Marc Mutz --- tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'tests/auto') diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index a0ba91ba4a..3f7fdd6f6f 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -3106,7 +3106,6 @@ void tst_QLineEdit::inputMaskAndValidator() void tst_QLineEdit::maxLengthAndInputMask() { - // Really a test for #30447 QLineEdit *testWidget = ensureTestWidget(); QVERIFY(testWidget->inputMask().isNull()); testWidget->setMaxLength(10); @@ -3114,6 +3113,16 @@ void tst_QLineEdit::maxLengthAndInputMask() testWidget->setInputMask(QString()); QVERIFY(testWidget->inputMask().isNull()); QCOMPARE(testWidget->maxLength(), 10); + + testWidget->setInputMask("XXXX"); + QCOMPARE(testWidget->maxLength(), 4); + + testWidget->setMaxLength(15); + QCOMPARE(testWidget->maxLength(), 4); + + // 8 \ => raw string with 4 \ => input mask with 2 \ => maxLength = 2 + testWidget->setInputMask("\\\\\\\\"); + QCOMPARE(testWidget->maxLength(), 2); } -- cgit v1.2.3