From 999c7aa51fabe8d1aa9740c3808a80e8c632e90f Mon Sep 17 00:00:00 2001 From: buliabyak Date: Sun, 9 Apr 2006 05:32:24 +0000 Subject: [PATCH] Before the rev 10880 fix in xml/simple-node.cpp, text updating when dragging gradient handle worked solely due to a bug: a fake attribute change was fired on style= though it did not in fact change. Now that these fake change events are eliminated, we need to explicitly update the style of the text's arena items in _modified, same as is done e.g. in sp_shape_modified. --- src/sp-text.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/sp-text.cpp b/src/sp-text.cpp index 3bbb3b892..c1c4acae4 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; -- 2.30.2