summaryrefslogtreecommitdiffstats
path: root/src/widgets/font-selector.cpp
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2007-01-02 18:31:43 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2007-01-02 18:31:43 +0000
commiteb6255dab8a6d5505d32e21b64839d4d4bcf1280 (patch)
treeb8d794f0cdb7f7b33d05d6b879fa700f3f323ddd /src/widgets/font-selector.cpp
parentFixed bug [ 1610103 ]: font-size px unit missing after font family change (diff)
downloadinkscape-eb6255dab8a6d5505d32e21b64839d4d4bcf1280.tar.gz
inkscape-eb6255dab8a6d5505d32e21b64839d4d4bcf1280.zip
Fixed [ 1610944 ] Text dialog discard style and crash
(bzr r2124)
Diffstat (limited to 'src/widgets/font-selector.cpp')
-rw-r--r--src/widgets/font-selector.cpp31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/widgets/font-selector.cpp b/src/widgets/font-selector.cpp
index 614484073..4c84eeb24 100644
--- a/src/widgets/font-selector.cpp
+++ b/src/widgets/font-selector.cpp
@@ -6,10 +6,12 @@
* Authors:
* Chris Lahey <clahey@ximian.com>
* Lauris Kaplinski <lauris@kaplinski.com>
- * bulia byak <buliabyak@users.sf.net>
+ * bulia byak <buliabyak@users.sf.net>
+ * Johan Engelen <j.b.c.engelen@ewi.utwente.nl>
*
* Copyright (C) 1999-2001 Ximian, Inc.
* Copyright (C) 2002 Lauris Kaplinski
+ * Copyright (C) -2007 Authors
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
@@ -392,7 +394,7 @@ GtkWidget *sp_font_selector_new()
void sp_font_selector_set_font (SPFontSelector *fsel, font_instance *font, double size)
{
- if (font && (fsel->font != font || size != fsel->fontsize))
+ if (font)
{
gchar family[256];
font->Family (family, 256);
@@ -410,28 +412,30 @@ void sp_font_selector_set_font (SPFontSelector *fsel, font_instance *font, doubl
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (fsel->family_treeview), path.gobj(), NULL, TRUE, 0.5, 0.5);
fsel->block_emit = FALSE;
- unsigned int i = path[0];
-
- gchar descr[256];
- font->Name(descr, 256);
-
GList *list = 0;
GtkTreeIter iter;
GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW(fsel->family_treeview));
gtk_tree_model_get_iter (model, &iter, path.gobj());
gtk_tree_model_get (model, &iter, 1, &list, -1);
- std::string descr_best (descr);
+ gchar descr[256];
+ font->Name(descr, 256);
+ std::string descr_best (family);
+ descr_best += " ";
descr_best += ((char*)list->data);
PangoFontDescription *descr_ = pango_font_description_from_string(descr);
PangoFontDescription *best_ = pango_font_description_from_string(descr_best.c_str());
+ unsigned int i = 0;
unsigned int best_i = 0;
-
- for ( ; list ; list = list->next)
+
+ // try to find best match with style description (i.e. bold, italic ?)
+ for (list = list->next ; list ; list = list->next)
{
- std::string descr_try (descr);
+ i++;
+ std::string descr_try (family);
+ descr_try += " ";
descr_try += ((char*)list->data);
PangoFontDescription *try_ = pango_font_description_from_string(descr_try.c_str());
if (pango_font_description_better_match (descr_, best_, try_))
@@ -441,9 +445,10 @@ void sp_font_selector_set_font (SPFontSelector *fsel, font_instance *font, doubl
best_i = i;
}
pango_font_description_free(try_);
- ++i;
}
-
+ pango_font_description_free(descr_);
+ pango_font_description_free(best_);
+
GtkTreePath *path_c = gtk_tree_path_new ();
gtk_tree_path_append_index (path_c, best_i);
gtk_tree_selection_select_path (gtk_tree_view_get_selection (GTK_TREE_VIEW (fsel->style_treeview)), path_c);