diff options
| author | Richard Hughes <cyreveatuserssourceforge> | 2010-10-21 18:08:22 +0000 |
|---|---|---|
| committer | Richard Hughes <cyreveatuserssourceforge> | 2010-10-21 18:08:22 +0000 |
| commit | f0e4dabfc79a600e3bb8df19cbe9eb74c6da7947 (patch) | |
| tree | a5d6553e7782d3a5f41620a6814e2cd11777a15a /src/text-editing.cpp | |
| parent | Translations. Spanish, Galician and French translation update. (diff) | |
| download | inkscape-f0e4dabfc79a600e3bb8df19cbe9eb74c6da7947.tar.gz inkscape-f0e4dabfc79a600e3bb8df19cbe9eb74c6da7947.zip | |
repr wasn't updated immediately after some text editing operations, which meant that if the file was immediately saved it might display wrong in other apps
(bzr r9840)
Diffstat (limited to 'src/text-editing.cpp')
| -rw-r--r-- | src/text-editing.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/text-editing.cpp b/src/text-editing.cpp index 76cf5e15b..5bad33d29 100644 --- a/src/text-editing.cpp +++ b/src/text-editing.cpp @@ -57,6 +57,7 @@ static void te_update_layout_now (SPItem *item) SP_TEXT(item)->rebuildLayout(); else if (SP_IS_FLOWTEXT (item)) SP_FLOWTEXT(item)->rebuildLayout(); + item->updateRepr(); } /** Returns true if there are no visible characters on the canvas */ @@ -1291,16 +1292,17 @@ static bool objects_have_equal_style(SPObject const *parent, SPObject const *chi parent_style = sp_style_write_string(parent_spstyle, SP_STYLE_FLAG_ALWAYS); sp_style_unref(parent_spstyle); - Glib::ustring child_style_construction(parent_style); + Glib::ustring child_style_construction; while (child != parent) { // FIXME: this assumes that child's style is only in style= whereas it can also be in css attributes! char const *style_text = SP_OBJECT_REPR(child)->attribute("style"); if (style_text && *style_text) { - child_style_construction += ';'; - child_style_construction += style_text; + child_style_construction.insert(0, style_text); + child_style_construction.insert(0, 1, ';'); } child = SP_OBJECT_PARENT(child); } + child_style_construction.insert(0, parent_style); SPStyle *child_spstyle = sp_style_new(SP_OBJECT_DOCUMENT(parent)); sp_style_merge_from_style_string(child_spstyle, child_style_construction.c_str()); gchar *child_style = sp_style_write_string(child_spstyle, SP_STYLE_FLAG_ALWAYS); @@ -1654,15 +1656,15 @@ static bool redundant_semi_nesting_processor(SPObject **item, SPObject *child, b SPCSSAttr *css_child_and_item = sp_repr_css_attr_new(); SPCSSAttr *css_child_only = sp_repr_css_attr_new(); + gchar const *item_style = SP_OBJECT_REPR(*item)->attribute("style"); + if (item_style && *item_style) { + sp_repr_css_attr_add_from_string(css_child_and_item, item_style); + } gchar const *child_style = SP_OBJECT_REPR(child)->attribute("style"); if (child_style && *child_style) { sp_repr_css_attr_add_from_string(css_child_and_item, child_style); sp_repr_css_attr_add_from_string(css_child_only, child_style); } - gchar const *item_style = SP_OBJECT_REPR(*item)->attribute("style"); - if (item_style && *item_style) { - sp_repr_css_attr_add_from_string(css_child_and_item, item_style); - } bool equal = css_attrs_are_equal(css_child_only, css_child_and_item); sp_repr_css_attr_unref(css_child_and_item); sp_repr_css_attr_unref(css_child_only); |
