summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorQiang Li <liqianga@uniontech.com>2021-04-14 11:15:46 +0800
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2021-04-19 09:22:04 +0000
commit777053cfff40570282e861527e0e52e22a359629 (patch)
tree8d99bfb117f5d2dccb79b8bb5acedb1ae8c0b53c /tests/auto/widgets
parent82f8519b827ba7fd89f8168632461f47b09605a7 (diff)
Re-layout QProgressDialog when setting the cancel button
Setting a cancel button on QProgressDialog more than once caused the layout to be invalid. The layout was only applied when the dialog resizes or the style changes, but not when a new cancel button is set. The solution is to update the layout() before showing the dialog when adopting new child widgets. Fixes: QTBUG-19983 Pick-to: 6.0 6.1 Change-Id: Id8fb1ac56e94a9bd97d4559a2e8d4835856fd7d0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp b/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
index b847315abd..86963ce24a 100644
--- a/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
+++ b/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
@@ -51,6 +51,7 @@ private Q_SLOTS:
void getSetCheck();
void task198202();
void QTBUG_31046();
+ void QTBUG_19983();
void settingCustomWidgets();
void i18n();
void setValueReentrancyGuard();
@@ -210,6 +211,29 @@ void tst_QProgressDialog::QTBUG_31046()
QCOMPARE(50, dlg.value());
}
+void tst_QProgressDialog::QTBUG_19983()
+{
+ QProgressDialog tempDlg;
+ tempDlg.setRange(0, 0);
+ tempDlg.setLabelText("This is a test.");
+
+ QPushButton *btnOne = new QPushButton("Cancel", &tempDlg);
+ tempDlg.setCancelButton(btnOne);
+ tempDlg.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&tempDlg));
+ const auto btnOneGeometry = btnOne->geometry();
+ QVERIFY(QPoint(0,0) != btnOneGeometry.topLeft());
+
+ tempDlg.cancel();
+ QVERIFY(!tempDlg.isVisible());
+
+ QPushButton *btnTwo = new QPushButton("Cancel", &tempDlg);
+ tempDlg.setCancelButton(btnTwo);
+ tempDlg.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&tempDlg));
+ QCOMPARE(btnOneGeometry, btnTwo->geometry());
+}
+
void tst_QProgressDialog::settingCustomWidgets()
{
QPointer<QLabel> l = new QLabel;