summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2014-05-29 09:52:45 +0000
committertavmjong-free <tavmjong@free.fr>2014-05-29 09:52:45 +0000
commitbb0190888e9c3ce7628e4662e963d115d7855b15 (patch)
tree096c9fd14a0e505bdbdeff8d524efcbe97bc2a32 /src
parentInitialize style store with default styles. Fixes Gtk-CRITICAL and GLib-Gobje... (diff)
downloadinkscape-bb0190888e9c3ce7628e4662e963d115d7855b15.tar.gz
inkscape-bb0190888e9c3ce7628e4662e963d115d7855b15.zip
Use SPStyle value for 'font-family' rather than parse 'style' ourselves.
This fixes the problem of a 'font-family' declared via the 'font' shorthand being ignored when creating the document font list. (bzr r13341.1.41)
Diffstat (limited to 'src')
-rw-r--r--src/libnrtype/font-lister.cpp31
1 files changed, 3 insertions, 28 deletions
diff --git a/src/libnrtype/font-lister.cpp b/src/libnrtype/font-lister.cpp
index 300273378..333c4ef5b 100644
--- a/src/libnrtype/font-lister.cpp
+++ b/src/libnrtype/font-lister.cpp
@@ -240,37 +240,12 @@ namespace Inkscape
font_list_store->thaw_notify();
}
- // FIXME: why do we parse the style attribute instead of the object's SPStyle?
void
FontLister::update_font_list_recursive( SPObject *r, std::list<Glib::ustring> *l ) {
- const gchar *style = r->getRepr()->attribute("style");
- if( style != NULL ) {
-
- std::vector<Glib::ustring> tokens = Glib::Regex::split_simple(";", style );
- for( size_t i=0; i < tokens.size(); ++i ) {
-
- Glib::ustring token = tokens[i];
- size_t found = token.find("font-family:");
-
- if( found != Glib::ustring::npos ) {
-
- // Remove "font-family:"
- token.erase(found,12);
-
- // Remove any leading single or double quote
- if( token[0] == '\'' || token[0] == '"' ) {
- token.erase(0,1);
- }
-
- // Remove any trailing single or double quote
- if( token[token.length()-1] == '\'' || token[token.length()-1] == '"' ) {
- token.erase(token.length()-1);
- }
-
- l->push_back( token );
- }
- }
+ const gchar *font_family = r->style->font_family.value;
+ if( font_family ) {
+ l->push_back( Glib::ustring( font_family ) );
}
for (SPObject *child = r->firstChild(); child; child = child->getNext()) {