mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 23:10:22 +00:00
fontchooser: Only compare font descriptions when families match
This way, we can find fonts way quicker as we only need to create font descriptions for fonts with matching families. Most importantly, we're rather quick in the "the font doesn't exist" case.
This commit is contained in:
parent
7d5d0a19e7
commit
c9ef2d019e
@ -874,6 +874,13 @@ gtk_font_chooser_widget_finalize (GObject *object)
|
||||
G_OBJECT_CLASS (gtk_font_chooser_widget_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
my_pango_font_family_equal (const char *familya,
|
||||
const char *familyb)
|
||||
{
|
||||
return g_ascii_strcasecmp (familya, familyb) == 0;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_font_chooser_widget_find_font (GtkFontChooserWidget *fontchooser,
|
||||
const PangoFontDescription *font_desc,
|
||||
@ -882,12 +889,24 @@ gtk_font_chooser_widget_find_font (GtkFontChooserWidget *fontchooser,
|
||||
{
|
||||
GtkFontChooserWidgetPrivate *priv = fontchooser->priv;
|
||||
PangoFontDescription *desc;
|
||||
PangoFontFamily *family;
|
||||
gboolean valid;
|
||||
|
||||
if (pango_font_description_get_family (font_desc) == NULL)
|
||||
return FALSE;
|
||||
|
||||
for (valid = gtk_tree_model_get_iter_first (priv->model, iter);
|
||||
valid;
|
||||
valid = gtk_tree_model_iter_next (priv->model, iter))
|
||||
{
|
||||
gtk_tree_model_get (priv->model, iter,
|
||||
FAMILY_COLUMN, &family,
|
||||
-1);
|
||||
|
||||
if (!my_pango_font_family_equal (pango_font_description_get_family (font_desc),
|
||||
pango_font_family_get_name (family)))
|
||||
continue;
|
||||
|
||||
desc = tree_model_get_font_description (priv->model, iter);
|
||||
|
||||
pango_font_description_merge_static (desc, font_desc, FALSE);
|
||||
|
Loading…
Reference in New Issue
Block a user