[gtk+] fontchooser: Only compare font descriptions when families match
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] fontchooser: Only compare font descriptions when families match
- Date: Thu, 22 Sep 2011 21:47:16 +0000 (UTC)
commit c9ef2d019e425b76467ad3867eaffa8b51a22726
Author: Benjamin Otte <otte redhat com>
Date: Wed Sep 21 05:44:22 2011 +0200
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.
gtk/gtkfontchooserwidget.c | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c
index e3844a9..346c9a4 100644
--- a/gtk/gtkfontchooserwidget.c
+++ b/gtk/gtkfontchooserwidget.c
@@ -875,6 +875,13 @@ gtk_font_chooser_widget_finalize (GObject *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,
/* out arguments */
@@ -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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]