[gtk+/gtk-3-16] fontchooser: Use gtk-fontconfig-timestamp setting
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-16] fontchooser: Use gtk-fontconfig-timestamp setting
- Date: Mon, 11 May 2015 18:25:12 +0000 (UTC)
commit d2df0aa7ca175f20a983e2bc7b8e94056b8a627b
Author: Emmanuele Bassi <ebassi gnome org>
Date: Mon May 4 13:25:27 2015 +0100
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
gtk/gtkfontchooserwidget.c | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c
index 5fc82b2..9e22fbc 100644
--- a/gtk/gtkfontchooserwidget.c
+++ b/gtk/gtkfontchooserwidget.c
@@ -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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]