diff options
author | Elvis Angelaccio <elvis.angelaccio@kde.org> | 2017-04-18 10:19:12 +0200 |
---|---|---|
committer | Elvis Angelaccio <elvis.angelaccio@kde.org> | 2017-04-19 08:49:49 +0000 |
commit | 288bfb0bbd778fdfa6ac9fdcdc1afc19ec13aeaf (patch) | |
tree | 5c944dbacc6e2e291ed342a6ec9be7e12564ba68 /tests | |
parent | 254f35ce98bebd8f4446fec66bb50f2126b61c28 (diff) |
QLineEdit: Make the clear button always the leftmost button
QLineEditIconButton currently draws a fully transparent pixmap in its
paintEvent() function, when the line edit is empty. This does not work
when there is another trailing QAction that is visible even when the
line edit has no text, as reported in QTBUG-59957.
To fix this issue, make sure the clear button is always the leftmost
button.
Task-number: QTBUG-59957
Change-Id: I8a4f96aae07856aa0e1053ebb338ba9bdf052a16
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index 330ce3a836..b7628b30e9 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -310,6 +310,7 @@ private slots: void shortcutOverrideOnReadonlyLineEdit_data(); void shortcutOverrideOnReadonlyLineEdit(); + void QTBUG59957_clearButtonLeftmostAction(); protected slots: void editingFinished(); @@ -4612,5 +4613,27 @@ void tst_QLineEdit::shortcutOverrideOnReadonlyLineEdit() QCOMPARE(spy.count(), activationCount); } +void tst_QLineEdit::QTBUG59957_clearButtonLeftmostAction() +{ + QLineEdit lineEdit; + lineEdit.setClearButtonEnabled(true); + + auto clearButton = lineEdit.findChild<QLineEditIconButton *>(); + QVERIFY(clearButton); + + QPixmap pixmap(16, 16); + lineEdit.addAction(QIcon(pixmap), QLineEdit::TrailingPosition); + lineEdit.addAction(QIcon(pixmap), QLineEdit::TrailingPosition); + + lineEdit.show(); + + const auto buttons = lineEdit.findChildren<QLineEditIconButton *>(); + for (const auto button : buttons) { + if (button == clearButton) + continue; + QVERIFY(clearButton->x() < button->x()); + } +} + QTEST_MAIN(tst_QLineEdit) #include "tst_qlineedit.moc" |