diff options
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r-- | tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp b/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp index c3faa93309..0425db3098 100644 --- a/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp +++ b/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp @@ -114,6 +114,7 @@ private slots: void about(); void detailsText(); void detailsButtonText(); + void expandDetails_QTBUG_32473(); #ifndef Q_OS_MAC void shortcut(); @@ -137,6 +138,19 @@ private: QTimer keySendTimer; }; +class tst_ResizingMessageBox : public QMessageBox +{ +public: + tst_ResizingMessageBox() : QMessageBox(), resized(false) { } + bool resized; + +protected: + void resizeEvent ( QResizeEvent * event ) { + resized = true; + QMessageBox::resizeEvent(event); + } +}; + tst_QMessageBox::tst_QMessageBox() : keyToSend(-1) { } @@ -603,6 +617,37 @@ void tst_QMessageBox::detailsButtonText() } } +void tst_QMessageBox::expandDetails_QTBUG_32473() +{ + tst_ResizingMessageBox box; + box.setDetailedText("bla"); + box.show(); + QApplication::postEvent(&box, new QEvent(QEvent::LanguageChange)); + QApplication::processEvents(); + QDialogButtonBox* bb = box.findChild<QDialogButtonBox*>("qt_msgbox_buttonbox"); + QVERIFY(bb); + + QList<QAbstractButton *> list = bb->buttons(); + QAbstractButton* moreButton = NULL; + foreach (QAbstractButton* btn, list) + if (btn && bb->buttonRole(btn) == QDialogButtonBox::ActionRole) + moreButton = btn; + QVERIFY(moreButton); + QVERIFY(QTest::qWaitForWindowExposed(&box)); + QRect geom = box.geometry(); + box.resized = false; + moreButton->click(); + QTRY_VERIFY(box.resized); + // After we receive the expose event for a second widget, it's likely + // that the window manager is also done manipulating the first QMessageBox. + QWidget fleece; + fleece.show(); + QTest::qWaitForWindowExposed(&fleece); + if (geom.topLeft() == box.geometry().topLeft()) + QTest::qWait(500); + QCOMPARE(geom.topLeft(), box.geometry().topLeft()); +} + void tst_QMessageBox::incorrectDefaultButton() { keyToSend = Qt::Key_Escape; |