[gtk+] fontchooser: Move the filter func to the visibility func
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] fontchooser: Move the filter func to the visibility func
- Date: Mon, 19 Sep 2011 20:14:59 +0000 (UTC)
commit 6d8010d3d409bfab85eccab6af9fb25a643954aa
Author: Benjamin Otte <otte redhat com>
Date: Mon Sep 19 15:45:24 2011 +0200
fontchooser: Move the filter func to the visibility func
... instead of rereading all the fonts every time.
With this change, the liststore now contains every font face known to
GTK, so we can actually walk it for matching fonts.
gtk/gtkfontchooserwidget.c | 27 ++++++++++++++++++++-------
1 files changed, 20 insertions(+), 7 deletions(-)
---
diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c
index 9ea47b1..1bd1405 100644
--- a/gtk/gtkfontchooserwidget.c
+++ b/gtk/gtkfontchooserwidget.c
@@ -752,10 +752,6 @@ populate_list (GtkFontChooserWidget *fontchooser,
const gchar *face_name;
gchar *font_desc;
- if (priv->filter_func != NULL &&
- !priv->filter_func (families[i], faces[j], priv->filter_data))
- continue;
-
pango_desc = pango_font_face_describe (faces[j]);
face_name = pango_font_face_get_face_name (faces[j]);
font_desc = pango_font_description_to_string (pango_desc);
@@ -831,6 +827,25 @@ visible_func (GtkTreeModel *model,
gchar *font_name, *font_name_casefold, *term_casefold;
guint i;
+ if (priv->filter_func != NULL)
+ {
+ PangoFontFamily *family;
+ PangoFontFace *face;
+
+ gtk_tree_model_get (model, iter,
+ FAMILY_COLUMN, &family,
+ FACE_COLUMN, &face,
+ -1);
+
+ result = priv->filter_func (family, face, priv->filter_data);
+
+ g_object_unref (family);
+ g_object_unref (face);
+
+ if (!result)
+ return FALSE;
+ }
+
/* If there's no filter string we show the item */
search_text = gtk_entry_get_text (GTK_ENTRY (priv->search_entry));
if (strlen (search_text) == 0)
@@ -1190,9 +1205,7 @@ gtk_font_chooser_widget_set_filter_func (GtkFontChooser *chooser,
priv->filter_data = data;
priv->filter_data_destroy = destroy;
- populate_list (fontchooser,
- GTK_TREE_VIEW (priv->family_face_list),
- priv->model);
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (priv->filter_model));
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]