X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-text.cpp;h=f9be549444d5986d804031f806a9f45edcf9c85a;hb=2d5f45472d142796f87b8b737cc0b56fc9de3bf7;hp=3bbb3b89263d55e0fcc91c14c4d3eccda0bb7c39;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git diff --git a/src/sp-text.cpp b/src/sp-text.cpp index 3bbb3b892..f9be54944 100644 --- a/src/sp-text.cpp +++ b/src/sp-text.cpp @@ -263,6 +263,20 @@ sp_text_modified (SPObject *object, guint flags) guint cflags = (flags & SP_OBJECT_MODIFIED_CASCADE); if (flags & SP_OBJECT_MODIFIED_FLAG) cflags |= SP_OBJECT_PARENT_MODIFIED_FLAG; + // FIXME: all that we need to do here is nr_arena_glyphs_[group_]set_style, to set the changed + // style, but there's no easy way to access the arena glyphs or glyph groups corresponding to a + // text object. Therefore we do here the same as in _update, that is, destroy all arena items + // and create new ones. This is probably quite wasteful. + if (flags & ( SP_OBJECT_STYLE_MODIFIED_FLAG )) { + SPText *text = SP_TEXT (object); + NRRect paintbox; + sp_item_invoke_bbox(text, &paintbox, NR::identity(), TRUE); + for (SPItemView* v = text->display; v != NULL; v = v->next) { + text->_clearFlow(NR_ARENA_GROUP(v->arenaitem)); + text->layout.show(NR_ARENA_GROUP(v->arenaitem), &paintbox); + } + } + /* Create temporary list of children */ GSList *l = NULL; SPObject *child; @@ -395,7 +409,7 @@ sp_text_description(SPItem *item) n = g_strdup(_("<no name found>")); } - GString *xs = SP_PX_TO_METRIC_STRING(style->font_size.computed, SP_DT_NAMEDVIEW(SP_ACTIVE_DESKTOP)->getDefaultMetric()); + GString *xs = SP_PX_TO_METRIC_STRING(style->font_size.computed, sp_desktop_namedview(SP_ACTIVE_DESKTOP)->getDefaultMetric()); char *ret = ( SP_IS_TEXT_TEXTPATH(item) ? g_strdup_printf(_("Text on path (%s, %s)"), n, xs->str)