QQuickMaterialTheme: check if default font family is available
Explicitly check if "Roboto" font family is available before using it as a default font family for Material style. If not - try fallback to "Noto" font family. If both are unavailable, use default system font. This prevents us from missing family fallback lookups, which can be slow. Similar change 86b4f9f583e31f0db171a4320680902d83340468 was made also for Imagine style. Fixes: QTBUG-83155 Change-Id: I57b7837175dd2b7d5097fbc648da33bd5443f8d5 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commitf8ce5d76a8
) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit8bcacb3f5b
)
This commit is contained in:
parent
c488bae64d
commit
c1884695ab
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#include <QtGui/qpa/qplatformdialoghelper.h>
|
#include <QtGui/qpa/qplatformdialoghelper.h>
|
||||||
#include <QtGui/qfont.h>
|
#include <QtGui/qfont.h>
|
||||||
#include <QtGui/qfontinfo.h>
|
#include <QtGui/qfontdatabase.h>
|
||||||
#include <QtQuickTemplates2/private/qquicktheme_p.h>
|
#include <QtQuickTemplates2/private/qquicktheme_p.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
@ -21,17 +21,15 @@ void QQuickMaterialTheme::initialize(QQuickTheme *theme)
|
||||||
QFont menuItemFont;
|
QFont menuItemFont;
|
||||||
QFont editorFont;
|
QFont editorFont;
|
||||||
|
|
||||||
QFont font;
|
auto defaultFontFamily = QLatin1String("Roboto");
|
||||||
font.setFamilies(QStringList{QLatin1String("Roboto")});
|
if (!QFontDatabase::hasFamily(defaultFontFamily)) {
|
||||||
QString family = QFontInfo(font).family();
|
defaultFontFamily = QLatin1String("Noto"); // fallback
|
||||||
|
if (!QFontDatabase::hasFamily(defaultFontFamily))
|
||||||
if (family != QLatin1String("Roboto")) {
|
defaultFontFamily = {};
|
||||||
font.setFamilies(QStringList{QLatin1String("Noto")});
|
|
||||||
family = QFontInfo(font).family();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (family == QLatin1String("Roboto") || family == QLatin1String("Noto")) {
|
if (!defaultFontFamily.isEmpty()) {
|
||||||
const QStringList families{family};
|
const QStringList families{defaultFontFamily};
|
||||||
systemFont.setFamilies(families);
|
systemFont.setFamilies(families);
|
||||||
buttonFont.setFamilies(families);
|
buttonFont.setFamilies(families);
|
||||||
toolTipFont.setFamilies(families);
|
toolTipFont.setFamilies(families);
|
||||||
|
|
Loading…
Reference in New Issue