diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp index 109b7268807..d12b109d9fe 100644 --- a/src/widgets/dialogs/qfontdialog.cpp +++ b/src/widgets/dialogs/qfontdialog.cpp @@ -322,6 +322,7 @@ void QFontDialogPrivate::init() familyList->setFocus(); retranslateStrings(); + sampleEdit->setObjectName(QLatin1String("qt_fontDialog_sampleEdit")); } /*! diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp index a9e13bad499..e9f20de8425 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp @@ -5828,6 +5828,10 @@ bool QStyleSheetStyle::event(QEvent *e) void QStyleSheetStyle::updateStyleSheetFont(QWidget* w) const { + // Qt's fontDialog relies on the font of the sample edit for its selection, + // we should never override it. + if (w->objectName() == QLatin1String("qt_fontDialog_sampleEdit")) + return; QWidget *container = containerWidget(w); QRenderRule rule = renderRule(container, PseudoElement_None, PseudoClass_Active | PseudoClass_Enabled | extendedPseudoClass(container)); diff --git a/tests/auto/gui/text/qglyphrun/qglyphrun.pro b/tests/auto/gui/text/qglyphrun/qglyphrun.pro index 0993a5c49c0..b7d9f164c93 100644 --- a/tests/auto/gui/text/qglyphrun/qglyphrun.pro +++ b/tests/auto/gui/text/qglyphrun/qglyphrun.pro @@ -8,14 +8,13 @@ linux: CONFIG += insignificant_test SOURCES += \ tst_qglyphrun.cpp -android { + +wince* { + additionalFiles.files = test.ttf + additionalFiles.path = ../../../shared/resources/ + DEPLOYMENT += additionalFiles +} else { RESOURCES += \ testdata.qrc } -wince* { - additionalFiles.files = test.ttf - additionalFiles.path = . - DEPLOYMENT += additionalFiles -} - diff --git a/tests/auto/gui/text/qglyphrun/testdata.qrc b/tests/auto/gui/text/qglyphrun/testdata.qrc index c4e237ad2f2..25cadc477e8 100644 --- a/tests/auto/gui/text/qglyphrun/testdata.qrc +++ b/tests/auto/gui/text/qglyphrun/testdata.qrc @@ -1,5 +1,5 @@ - test.ttf + ../../../shared/resources/test.ttf diff --git a/tests/auto/gui/text/qrawfont/qrawfont.pro b/tests/auto/gui/text/qrawfont/qrawfont.pro index 1891e7a9bfc..20da2e9a224 100644 --- a/tests/auto/gui/text/qrawfont/qrawfont.pro +++ b/tests/auto/gui/text/qrawfont/qrawfont.pro @@ -7,9 +7,5 @@ QT = core core-private gui gui-private testlib SOURCES += \ tst_qrawfont.cpp -TESTDATA += testfont_bold_italic.ttf testfont.ttf - -android { - RESOURCES += \ - testdata.qrc -} +RESOURCES += \ + testdata.qrc diff --git a/tests/auto/gui/text/qrawfont/testdata.qrc b/tests/auto/gui/text/qrawfont/testdata.qrc index 7bea0d5a399..8f8e32ed246 100644 --- a/tests/auto/gui/text/qrawfont/testdata.qrc +++ b/tests/auto/gui/text/qrawfont/testdata.qrc @@ -1,6 +1,6 @@ testfont_bold_italic.ttf - testfont.ttf + ../../../shared/resources/testfont.ttf diff --git a/tests/auto/gui/text/qglyphrun/test.ttf b/tests/auto/shared/resources/test.ttf similarity index 100% rename from tests/auto/gui/text/qglyphrun/test.ttf rename to tests/auto/shared/resources/test.ttf diff --git a/tests/auto/gui/text/qrawfont/testfont.ttf b/tests/auto/shared/resources/testfont.ttf similarity index 100% rename from tests/auto/gui/text/qrawfont/testfont.ttf rename to tests/auto/shared/resources/testfont.ttf diff --git a/tests/auto/widgets/dialogs/qfontdialog/qfontdialog.pro b/tests/auto/widgets/dialogs/qfontdialog/qfontdialog.pro index 8116fe379aa..dc1702971e7 100644 --- a/tests/auto/widgets/dialogs/qfontdialog/qfontdialog.pro +++ b/tests/auto/widgets/dialogs/qfontdialog/qfontdialog.pro @@ -7,6 +7,8 @@ QT += core-private gui-private SOURCES += tst_qfontdialog.cpp +RESOURCES += testfonts.qrc + mac { # ### fixme # OBJECTIVE_SOURCES += tst_qfontdialog_mac_helpers.mm diff --git a/tests/auto/widgets/dialogs/qfontdialog/testfonts.qrc b/tests/auto/widgets/dialogs/qfontdialog/testfonts.qrc new file mode 100644 index 00000000000..cdfa287b392 --- /dev/null +++ b/tests/auto/widgets/dialogs/qfontdialog/testfonts.qrc @@ -0,0 +1,6 @@ + + + ../../../shared/resources/test.ttf + ../../../shared/resources/testfont.ttf + + diff --git a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp index 22c84c22449..92ea7e5e571 100644 --- a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp +++ b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp @@ -36,6 +36,7 @@ #include +#include #include #include #include @@ -70,6 +71,10 @@ private slots: void setFont(); void task256466_wrongStyle(); void setNonStandardFontSize(); +#ifndef QT_NO_STYLE_STYLESHEET + void qtbug_41513_stylesheetStyle(); +#endif + private: void runSlotWithFailsafeTimer(const char *member); @@ -201,6 +206,31 @@ void tst_QFontDialog::setNonStandardFontSize() { runSlotWithFailsafeTimer(SLOT(testNonStandardFontSize())); } +#ifndef QT_NO_STYLE_STYLESHEET +static const QString offendingStyleSheet = QStringLiteral("* { font-family: \"QtBidiTestFont\"; }"); + +void tst_QFontDialog::qtbug_41513_stylesheetStyle() +{ + if (QFontDatabase::addApplicationFont(QFINDTESTDATA("test.ttf")) < 0) + QSKIP("Test fonts not found."); + if (QFontDatabase::addApplicationFont(QFINDTESTDATA("testfont.ttf")) < 0) + QSKIP("Test fonts not found."); + QFont testFont = QFont(QStringLiteral("QtsSpecialTestFont")); + qApp->setStyleSheet(offendingStyleSheet); + bool accepted = false; + QTimer::singleShot(2000, this, SLOT(postKeyReturn())); + QFont resultFont = QFontDialog::getFont(&accepted, testFont, + QApplication::activeWindow(), + QLatin1String("QFontDialog - Stylesheet Test"), + QFontDialog::DontUseNativeDialog); + QVERIFY(accepted); + + QCOMPARE(resultFont, testFont); + + // reset stylesheet + qApp->setStyleSheet(QString()); +} +#endif // QT_NO_STYLE_STYLESHEET void tst_QFontDialog::testNonStandardFontSize() {