From 88c0a317ec879df0bb395845574afc8cb359f639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 28 Mar 2022 14:52:31 +0200 Subject: [PATCH] QFontDatabase: Track empty slots in application font list via file name This allows us to use the properties of the application font as a way to distinguish whether the font has been populated or not. Change-Id: Iccce32b23c1b987f2f75fef955227bddc2495fa3 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qfontdatabase.cpp | 7 +++---- src/gui/text/qfontdatabase_p.h | 2 ++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 7b88f3267a..cc68354995 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -1296,10 +1296,9 @@ QFontDatabasePrivate *QFontDatabasePrivate::ensureFontDatabase() auto *platformFontDatabase = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); platformFontDatabase->populateFontDatabase(); for (int i = 0; i < d->applicationFonts.count(); i++) { - if (!d->applicationFonts.at(i).properties.isEmpty()) { - auto *font = &d->applicationFonts[i]; + auto *font = &d->applicationFonts[i]; + if (!font->isNull()) platformFontDatabase->addApplicationFont(font->data, font->fileName, font); - } } } return d; @@ -2107,7 +2106,7 @@ int QFontDatabasePrivate::addAppFont(const QByteArray &fontData, const QString & int i; for (i = 0; i < applicationFonts.count(); ++i) - if (applicationFonts.at(i).properties.isEmpty()) + if (applicationFonts.at(i).isNull()) break; if (i >= applicationFonts.count()) { applicationFonts.append(ApplicationFont()); diff --git a/src/gui/text/qfontdatabase_p.h b/src/gui/text/qfontdatabase_p.h index 8eb0e250cf..5b78af34a9 100644 --- a/src/gui/text/qfontdatabase_p.h +++ b/src/gui/text/qfontdatabase_p.h @@ -244,6 +244,8 @@ public: QString fileName; QByteArray data; + bool isNull() const { return fileName.isEmpty(); } + struct Properties { QString familyName; QString styleName;