summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2020-11-05 17:11:46 +0100
committerGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2020-11-06 10:16:32 +0100
commitc9b8c2cddbd41c0c80bf46ad587ebb9a342255da (patch)
treeff5ccdfa514c197461f5273cfcd653e966c9abb5 /tests/auto/widgets
parentaa6ad154243b514cd55b10af64b72f4fa3d1cd02 (diff)
QLineEdit: check a int->QChar conversion, and make it explicit
QStyle::styleHint returns int, and that int was simply used to build a QChar representing the "password mask" character. Enforce that it actually fits and then do an explicit cast. (In general, of course, this is an API flaw; styleHint should somehow return a QString for this use case). Change-Id: Ifb6181b229b91cc84859cb9b9d57e21d6748c31a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index e4bf36efaa..6df217d801 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -1679,7 +1679,9 @@ void tst_QLineEdit::displayText_data()
m << bool(use_setText);
s = key_mode_str + "Password";
m = QLineEdit::Password;
- QChar passChar = qApp->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, 0, m_testWidget);
+ const int passwordCharacter = qApp->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, 0, m_testWidget);
+ QVERIFY(passwordCharacter <= 0xFFFF);
+ const QChar passChar(passwordCharacter);
QString input;
QString pass;
input = "Hello World";
@@ -1725,7 +1727,9 @@ void tst_QLineEdit::passwordEchoOnEdit()
QStyleOptionFrame opt;
QLineEdit *testWidget = ensureTestWidget();
- QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget);
+ const int passwordCharacter = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget);
+ QVERIFY(passwordCharacter <= 0xFFFF);
+ const QChar fillChar(passwordCharacter);
testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit);
testWidget->setFocus();
@@ -1772,7 +1776,9 @@ void tst_QLineEdit::passwordEchoDelay()
QSKIP("Platform not defining echo delay and overriding only possible in internal build");
QStyleOptionFrame opt;
- QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget);
+ const int passwordCharacter = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget);
+ QVERIFY(passwordCharacter <= 0xFFFF);
+ const QChar fillChar(passwordCharacter);
testWidget->setEchoMode(QLineEdit::Password);
testWidget->setFocus();
@@ -3917,7 +3923,9 @@ void tst_QLineEdit::task241436_passwordEchoOnEditRestoreEchoMode()
QStyleOptionFrame opt;
QLineEdit *testWidget = ensureTestWidget();
- QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget);
+ const int passwordCharacter = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget);
+ QVERIFY(passwordCharacter <= 0xFFFF);
+ const QChar fillChar(passwordCharacter);
testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit);
testWidget->setFocus();