forked from enlightenment/efl
Evas textblock: Hopefully eliminate all issues with uninit cursors.
SVN revision: 61227
This commit is contained in:
parent
6852dc4971
commit
181eda995a
|
@ -6563,6 +6563,11 @@ _evas_textblock_cursors_update_offset(const Evas_Textblock_Cursor *cur,
|
||||||
data->pos += offset;
|
data->pos += offset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (!data->node)
|
||||||
|
{
|
||||||
|
data->node = o->text_nodes;
|
||||||
|
data->pos = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6612,8 +6617,6 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *_text)
|
||||||
if (!cur) return 0;
|
if (!cur) return 0;
|
||||||
text = eina_unicode_utf8_to_unicode(_text, &len);
|
text = eina_unicode_utf8_to_unicode(_text, &len);
|
||||||
o = (Evas_Object_Textblock *)(cur->obj->object_data);
|
o = (Evas_Object_Textblock *)(cur->obj->object_data);
|
||||||
/* Update all the cursors after our position. */
|
|
||||||
_evas_textblock_cursors_update_offset(cur, cur->node, cur->pos, len);
|
|
||||||
|
|
||||||
n = cur->node;
|
n = cur->node;
|
||||||
if (n)
|
if (n)
|
||||||
|
@ -6644,6 +6647,11 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *_text)
|
||||||
fnode = n->format_node;
|
fnode = n->format_node;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (o->text_nodes)
|
||||||
|
{
|
||||||
|
cur->node = o->text_nodes;
|
||||||
|
cur->pos = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
n = _evas_textblock_node_text_new();
|
n = _evas_textblock_node_text_new();
|
||||||
|
@ -6658,6 +6666,9 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *_text)
|
||||||
if (fnode && (fnode->text_node == cur->node))
|
if (fnode && (fnode->text_node == cur->node))
|
||||||
fnode->offset += len;
|
fnode->offset += len;
|
||||||
|
|
||||||
|
/* Update all the cursors after our position. */
|
||||||
|
_evas_textblock_cursors_update_offset(cur, cur->node, cur->pos, len);
|
||||||
|
|
||||||
_evas_textblock_changed(o, cur->obj);
|
_evas_textblock_changed(o, cur->obj);
|
||||||
n->dirty = EINA_TRUE;
|
n->dirty = EINA_TRUE;
|
||||||
free(text);
|
free(text);
|
||||||
|
|
Loading…
Reference in New Issue