From 685f8fe550b2360546af8dc7fe4c3f747631645b Mon Sep 17 00:00:00 2001 From: Leonard Lee Date: Tue, 25 Mar 2014 10:47:29 +0100 Subject: Do not rely on the list of standard font sizes for QFontDialog. QFontDialog should always show the correct size, even if the size is not available in the list of standard font sizes. Native font dialogs across common platforms show the correct size at all times. Inside init() function, the size list requires proper initialization since the initial value of size is zero. Task-number: QTBUG-10317 Change-Id: Idc9e922ac95f797ac98bbf6c885e52828c4c48fd Reviewed-by: Liang Qi --- .../dialogs/qfontdialog/tst_qfontdialog.cpp | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp index 6eb36115cb..c5717a808c 100644 --- a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp +++ b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp @@ -66,6 +66,7 @@ public slots: void postKeyReturn(); void testGetFont(); void testSetFont(); + void testNonStandardFontSize(); public slots: void initTestCase(); @@ -76,6 +77,7 @@ private slots: void defaultOkButton(); void setFont(); void task256466_wrongStyle(); + void setNonStandardFontSize(); private: void runSlotWithFailsafeTimer(const char *member); @@ -203,8 +205,38 @@ void tst_QFontDialog::task256466_wrongStyle() } } +void tst_QFontDialog::setNonStandardFontSize() +{ + runSlotWithFailsafeTimer(SLOT(testNonStandardFontSize())); +} +void tst_QFontDialog::testNonStandardFontSize() +{ + QList standardSizesList = QFontDatabase::standardSizes(); + int nonStandardFontSize; + if (!standardSizesList.isEmpty()) { + nonStandardFontSize = standardSizesList.at(standardSizesList.count()-1); // get the maximum standard size. + nonStandardFontSize += 1; // the increment of 1 to mock a non-standard font size. + } else { + QSKIP("QFontDatabase::standardSizes() is empty."); + } + QFont testFont; + testFont.setPointSize(nonStandardFontSize); + + bool accepted = false; + QTimer::singleShot(2000, this, SLOT(postKeyReturn())); + QFont resultFont = QFontDialog::getFont(&accepted, testFont, + QApplication::activeWindow(), + QLatin1String("QFontDialog - NonStandardFontSize Test"), + QFontDialog::DontUseNativeDialog); + QVERIFY(accepted); + + if (accepted) + QCOMPARE(testFont.pointSize(), resultFont.pointSize()); + else + QWARN("Fail using a non-standard font size."); +} QTEST_MAIN(tst_QFontDialog) #include "tst_qfontdialog.moc" -- cgit v1.2.3