diff options
Diffstat (limited to 'src/gui/text')
-rw-r--r-- | src/gui/text/qfontdatabase_qpa.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp index 2e42f8c..8776a00 100644 --- a/src/gui/text/qfontdatabase_qpa.cpp +++ b/src/gui/text/qfontdatabase_qpa.cpp @@ -103,14 +103,22 @@ static QStringList fallbackFamilies(const QString &family, const QFont::Style &s return retList; } +static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt); + static void initializeDb() { - static int initialized = false; + QFontDatabasePrivate *db = privateDb(); - if (!initialized) { - //init by asking for the platformfontdb for the first time :) + // init by asking for the platformfontdb for the first time or after invalidation + if (!db->count) QApplicationPrivate::platformIntegration()->fontDatabase()->populateFontDatabase(); - initialized = true; + + if (db->reregisterAppFonts) { + for (int i = 0; i < db->applicationFonts.count(); i++) { + if (!db->applicationFonts.at(i).families.isEmpty()) + registerFont(&db->applicationFonts[i]); + } + db->reregisterAppFonts = false; } } @@ -133,7 +141,9 @@ void qt_applyFontDatabaseSettings(const QSettings &settings) static inline void load(const QString & = QString(), int = -1) { - initializeDb(); + // Only initialize the database if it has been cleared or not initialized yet + if (!privateDb()->count) + initializeDb(); } static |