Evas textblock: Fixed removing of format pairs in a rare case.
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 20 Jul 2011 15:45:12 +0000 (15:45 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 20 Jul 2011 15:45:12 +0000 (15:45 +0000)
Until now, removing the <ps> when <b><ps></b> would have left the <b></b>
intact instead of removing them.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@61529 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_object_textblock.c

index 7ac9103..72c627a 100644 (file)
@@ -6898,7 +6898,6 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
 {
    Evas_Object_Textblock *o;
    Evas_Object_Textblock_Node_Text *n, *n2;
-   int merge_nodes = 0;
    const Eina_Unicode *text;
    int chr, ind, ppos;
 
@@ -6915,6 +6914,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
 
    if (chr == 0) return;
    ppos = cur->pos;
+   eina_ustrbuf_remove(n->unicode, cur->pos, ind);
    /* Remove a format node if needed, and remove the char only if the
     * fmt node is not visible */
      {
@@ -6929,7 +6929,9 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
              format = last_fmt->format;
              if (format && _IS_PARAGRAPH_SEPARATOR(o, format))
                {
-                  merge_nodes = 1;
+                  /* If it was a paragraph separator, we should merge the
+                   * current with the next, there must be a next. */
+                  _evas_textblock_cursor_nodes_merge(cur);
                }
              /* If a singnular, mark as invisible, so we'll delete it. */
              if (!format || ((*format != '+') && (*format != '-')))
@@ -6945,13 +6947,6 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
 
         _evas_textblock_node_format_remove_matching(o, fmt);
      }
-   eina_ustrbuf_remove(n->unicode, cur->pos, ind);
-   /* If it was a paragraph separator, we should merge the current with the
-    * next, there must be a next. */
-   if (merge_nodes)
-     {
-        _evas_textblock_cursor_nodes_merge(cur);
-     }
 
    if (cur->pos == eina_ustrbuf_length_get(n->unicode))
      {