diff options
author | Shawn Rutledge <shawn.rutledge@digia.com> | 2013-09-09 13:10:37 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-16 14:15:06 +0200 |
commit | 26ddb586acd49834c7cffac781ce504ec78635cc (patch) | |
tree | 9395d60b9df150d383b2cc315875e159db69695b /tests/auto | |
parent | 63b6a9e6e451d1095bc624e99e82738e2f26e3be (diff) |
xcb: QWindow never uses XCB_GRAVITY_CENTER
Center gravity doesn't mean center the window, it only affects the
method of converting between internal window bounds and decorated bounds.
So wanting to have each dialog centered w.r.t. its transient parent
is not a reason for using center gravity. Instead it caused the
bug that when you resize a QMessageBox by clicking the Show Details
button, it jumps downwards on the screen.
Task-number: QTBUG-32473
Change-Id: I3fabf3caa1e4d10fd4f7508e297f73efe5cc51b6
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'tests/auto')
-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; |