forked from AuroraMiddleware/gtk
fontchooser: Use gtk-fontconfig-timestamp setting
We can use the GtkSettings:gtk-fontconfig-timestamp property to decide whether or not we should reload fonts on style and screen changes. This should avoid doing a lot of work with large font collections when only the theme has changed. https://bugzilla.gnome.org/show_bug.cgi?id=748782
This commit is contained in:
parent
4c06d08e2d
commit
c6df17577a
@ -95,6 +95,8 @@ struct _GtkFontChooserWidgetPrivate
|
||||
GtkFontFilterFunc filter_func;
|
||||
gpointer filter_data;
|
||||
GDestroyNotify filter_data_destroy;
|
||||
|
||||
guint last_fontconfig_timestamp;
|
||||
};
|
||||
|
||||
/* This is the initial fixed height and the top padding of the preview entry */
|
||||
@ -633,6 +635,21 @@ gtk_font_chooser_widget_load_fonts (GtkFontChooserWidget *fontchooser)
|
||||
gint n_families, i;
|
||||
PangoFontFamily **families;
|
||||
gchar *family_and_face;
|
||||
guint fontconfig_timestamp;
|
||||
|
||||
g_object_get (gtk_widget_get_settings (GTK_WIDGET (fontchooser)),
|
||||
"gtk-fontconfig-timestamp", &fontconfig_timestamp,
|
||||
NULL);
|
||||
|
||||
/* The fontconfig timestamp is only set on systems with fontconfig; every
|
||||
* other platform will set it to 0. For those systems, we fall back to
|
||||
* reloading the fonts every time.
|
||||
*/
|
||||
if (fontconfig_timestamp != 0 &&
|
||||
priv->last_fontconfig_timestamp == fontconfig_timestamp)
|
||||
return;
|
||||
|
||||
priv->last_fontconfig_timestamp = fontconfig_timestamp;
|
||||
|
||||
list_store = GTK_LIST_STORE (priv->model);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user