diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-05-22 09:39:52 +0200 |
---|---|---|
committer | David Faure <david.faure@kdab.com> | 2015-08-18 12:47:17 +0000 |
commit | 4dccb2ca674e9eafca65da0775254932102c7f4b (patch) | |
tree | 4cff9d475ae8b281f6a80e6915ee97a119b76662 /tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | |
parent | ba84e346b8a3eba6686fa18e1ef546def98073fa (diff) |
Handle action events in QLineEditIconButton.
Ensure QAction::setVisible() is
handled and reposition if visibility changes.
Task-number: QTBUG-39660
Change-Id: I14f0659aedc8dc89ddef3159d3a500b40b1563ff
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index adedc601a9..e6d63ee4d9 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -306,6 +306,7 @@ private slots: void clearButton(); void clearButtonVisibleAfterSettingText_QTBUG_45518(); void sideWidgets(); + void sideWidgetsActionEvents(); void shouldShowPlaceholderText_data(); void shouldShowPlaceholderText(); @@ -4318,6 +4319,13 @@ void tst_QLineEdit::clearButtonVisibleAfterSettingText_QTBUG_45518() #endif // QT_BUILD_INTERNAL } +static inline QIcon sideWidgetTestIcon() +{ + QImage image(QSize(20, 20), QImage::Format_ARGB32); + image.fill(Qt::yellow); + return QIcon(QPixmap::fromImage(image)); +} + void tst_QLineEdit::sideWidgets() { QWidget testWidget; @@ -4325,9 +4333,7 @@ void tst_QLineEdit::sideWidgets() QLineEdit *lineEdit = new QLineEdit(&testWidget); l->addWidget(lineEdit); l->addSpacerItem(new QSpacerItem(0, 50, QSizePolicy::Ignored, QSizePolicy::Fixed)); - QImage image(QSize(20, 20), QImage::Format_ARGB32); - image.fill(Qt::yellow); - QAction *iconAction = new QAction(QIcon(QPixmap::fromImage(image)), QString(), lineEdit); + QAction *iconAction = new QAction(sideWidgetTestIcon(), QString(), lineEdit); QWidgetAction *label1Action = new QWidgetAction(lineEdit); label1Action->setDefaultWidget(new QLabel(QStringLiteral("l1"))); QWidgetAction *label2Action = new QWidgetAction(lineEdit); @@ -4354,6 +4360,38 @@ void tst_QLineEdit::sideWidgets() lineEdit->addAction(iconAction); } +void tst_QLineEdit::sideWidgetsActionEvents() +{ + // QTBUG-39660, verify whether action events are handled by the widget. + QWidget testWidget; + QVBoxLayout *l = new QVBoxLayout(&testWidget); + QLineEdit *lineEdit = new QLineEdit(&testWidget); + l->addWidget(lineEdit); + l->addSpacerItem(new QSpacerItem(0, 50, QSizePolicy::Ignored, QSizePolicy::Fixed)); + QAction *iconAction = lineEdit->addAction(sideWidgetTestIcon(), QLineEdit::LeadingPosition); + testWidget.move(300, 300); + testWidget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&testWidget)); + + QWidget *toolButton = Q_NULLPTR; + foreach (QWidget *w, iconAction->associatedWidgets()) { + if (qobject_cast<QToolButton *>(w)) { + toolButton = w; + break; + } + } + QVERIFY(toolButton); + + QVERIFY(toolButton->isVisible()); + QVERIFY(toolButton->isEnabled()); + + iconAction->setEnabled(false); + QVERIFY(!toolButton->isEnabled()); + + iconAction->setVisible(false); + QVERIFY(!toolButton->isVisible()); +} + Q_DECLARE_METATYPE(Qt::AlignmentFlag) void tst_QLineEdit::shouldShowPlaceholderText_data() { |