From: Enlightenment S. <no-...@en...> - 2011-07-24 08:50:49
|
Log: Evas textblock: Fixed updating of formats position on char_delete. Format offsets got wrong when merging paragraphs. Author: tasn Date: 2011-07-24 01:50:42 -0700 (Sun, 24 Jul 2011) New Revision: 61638 Trac: http://trac.enlightenment.org/e/changeset/61638 Modified: trunk/evas/src/lib/canvas/evas_object_textblock.c Modified: trunk/evas/src/lib/canvas/evas_object_textblock.c =================================================================== --- trunk/evas/src/lib/canvas/evas_object_textblock.c 2011-07-24 08:36:42 UTC (rev 61637) +++ trunk/evas/src/lib/canvas/evas_object_textblock.c 2011-07-24 08:50:42 UTC (rev 61638) @@ -6924,6 +6924,7 @@ /* Remove a format node if needed, and remove the char only if the * fmt node is not visible */ { + Eina_Bool should_merge = EINA_FALSE; Evas_Object_Textblock_Node_Format *fmt, *fmt2; fmt = _evas_textblock_cursor_node_format_at_pos_get(cur); if (fmt) @@ -6937,7 +6938,7 @@ { /* 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); + should_merge = EINA_TRUE; } /* If a singnular, mark as invisible, so we'll delete it. */ if (!format || ((*format != '+') && (*format != '-'))) @@ -6951,6 +6952,11 @@ _evas_textblock_node_format_adjust_offset(o, cur->node, fmt2, -(ind - cur->pos)); + if (should_merge) + { + _evas_textblock_cursor_nodes_merge(cur); + } + _evas_textblock_node_format_remove_matching(o, fmt); } |