summaryrefslogtreecommitdiff
path: root/gtk/gtkfontchooserwidget.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-09-21 00:07:21 +0200
committerBenjamin Otte <otte@redhat.com>2011-09-22 21:44:05 +0200
commita124d178255964b7eccc1d4e89a86b3cfd099f5e (patch)
treec991e620e4249cd014bd94e1ea51948ee51d558c /gtk/gtkfontchooserwidget.c
parent9d96830571fcd1f2405d472970f5d0c0119af8ac (diff)
downloadgtk+-a124d178255964b7eccc1d4e89a86b3cfd099f5e.tar.gz
fontchooser: Store an iter to the current font
Note that we cannot use GtkTreeSelection for this, because when the font list is filtered the current font may not be visible.
Diffstat (limited to 'gtk/gtkfontchooserwidget.c')
-rw-r--r--gtk/gtkfontchooserwidget.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c
index cddd6fb40c..f99ec35851 100644
--- a/gtk/gtkfontchooserwidget.c
+++ b/gtk/gtkfontchooserwidget.c
@@ -92,6 +92,8 @@ struct _GtkFontChooserWidgetPrivate
GtkWidget *size_slider;
PangoFontDescription *font_desc;
+ GtkTreeIter font_iter; /* invalid if font not available or pointer into model
+ (not filter_model) to the row containing font */
PangoFontFace *face;
PangoFontFamily *family;
@@ -385,6 +387,9 @@ cursor_changed_cb (GtkTreeView *treeview,
return;
}
+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (priv->filter_model),
+ &priv->font_iter,
+ &iter);
gtk_tree_model_get (priv->filter_model, &iter,
FACE_COLUMN, &face,
FAMILY_COLUMN, &family,
@@ -647,6 +652,7 @@ gtk_font_chooser_widget_load_fonts (GtkFontChooserWidget *fontchooser)
qsort (families, n_families, sizeof (PangoFontFamily *), cmp_families);
gtk_list_store_clear (list_store);
+ memset (&priv->font_iter, 0, sizeof (GtkTreeIter));
/* Iterate over families and faces */
for (i = 0; i < n_families; i++)
@@ -997,7 +1003,7 @@ gtk_font_chooser_widget_select_font (GtkFontChooserWidget *fontchooser)
if (gtk_font_chooser_widget_find_font (fontchooser,
priv->font_desc,
- &iter,
+ &priv->font_iter,
&priv->family,
&priv->face))
{
@@ -1021,6 +1027,7 @@ gtk_font_chooser_widget_select_font (GtkFontChooserWidget *fontchooser)
(gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->family_face_list)));
priv->face = NULL;
priv->family = NULL;
+ memset (&priv->font_iter, 0, sizeof (GtkTreeIter));
}
}