return retList;
}
+static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt);
+
static void initializeDb()
{
- static int initialized = false;
QFontDatabasePrivate *db = privateDb();
- if (!initialized || db->reregisterAppFonts) {
- //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)
QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFontDatabase();
+
+ 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;
- initialized = true;
}
}
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