mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-18 09:00:34 +00:00
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.
This commit is contained in:
parent
d88b7a6d6b
commit
6d8010d3d4
@ -752,10 +752,6 @@ populate_list (GtkFontChooserWidget *fontchooser,
|
|||||||
const gchar *face_name;
|
const gchar *face_name;
|
||||||
gchar *font_desc;
|
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]);
|
pango_desc = pango_font_face_describe (faces[j]);
|
||||||
face_name = pango_font_face_get_face_name (faces[j]);
|
face_name = pango_font_face_get_face_name (faces[j]);
|
||||||
font_desc = pango_font_description_to_string (pango_desc);
|
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;
|
gchar *font_name, *font_name_casefold, *term_casefold;
|
||||||
guint i;
|
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 */
|
/* If there's no filter string we show the item */
|
||||||
search_text = gtk_entry_get_text (GTK_ENTRY (priv->search_entry));
|
search_text = gtk_entry_get_text (GTK_ENTRY (priv->search_entry));
|
||||||
if (strlen (search_text) == 0)
|
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 = data;
|
||||||
priv->filter_data_destroy = destroy;
|
priv->filter_data_destroy = destroy;
|
||||||
|
|
||||||
populate_list (fontchooser,
|
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (priv->filter_model));
|
||||||
GTK_TREE_VIEW (priv->family_face_list),
|
|
||||||
priv->model);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user