{
DATA32 magic;
Evas_Textblock_Style *style;
+
+ /*
+ * Dedicated first cursor, immune to deletion and returned by
+ * evas_object_textblock_cursor_get(). For the sake of consistency (and
+ * avoiding code duplication) it is stored in cursors list as first element.
+ */
Evas_Textblock_Cursor *cursor;
+
Eina_List *cursors;
Evas_Object_Textblock_Node *nodes;
Evas_Object_Textblock_Line *lines;
/* Fixup cursors */
o = obj->object_data;
- if (next == o->cursor->node) {
- o->cursor->node = cur;
- o->cursor->pos += cur_len;
- }
EINA_LIST_FOREACH(o->cursors, l, cursor) {
if (next == cursor->node) {
cursor->node = cur;
}
{
Eina_List *l;
- Evas_Textblock_Cursor *data;
+ Evas_Textblock_Cursor *cursor;
- evas_textblock_cursor_node_first(o->cursor);
- EINA_LIST_FOREACH(o->cursors, l, data)
- evas_textblock_cursor_node_first(data);
+ EINA_LIST_FOREACH(o->cursors, l, cursor)
+ evas_textblock_cursor_node_first(cursor);
}
}
Eina_List *l;
Evas_Textblock_Cursor *data;
- if (cur != o->cursor)
- {
- if (cur->node == o->cursor->node)
- {
- if (o->cursor->pos > cur->pos)
- o->cursor->pos += strlen(text);
- }
- }
EINA_LIST_FOREACH(o->cursors, l, data)
{
if (data != cur)
Eina_List *l;
Evas_Textblock_Cursor *data;
- if (cur != o->cursor)
- {
- if (cur->node == o->cursor->node)
- {
- if ((o->cursor->node) &&
- (o->cursor->node->type == NODE_TEXT) &&
- (o->cursor->pos >= cur->pos))
- o->cursor->pos += strlen(text);
- }
- }
EINA_LIST_FOREACH(o->cursors, l, data)
{
if (data != cur)
Eina_List *l;
Evas_Textblock_Cursor *data;
- if (cur != o->cursor)
- {
- if (n == o->cursor->node)
- {
- o->cursor->node = cur->node;
- o->cursor->pos = cur->pos;
- o->cursor->eol = cur->eol;
- }
- }
EINA_LIST_FOREACH(o->cursors, l, data)
{
if (data != cur)
Eina_List *l;
Evas_Textblock_Cursor *data;
- if (cur != o->cursor)
- {
- if ((n == o->cursor->node) &&
- (o->cursor->pos > ppos))
- {
- o->cursor->pos -= (index - ppos);
- }
- }
EINA_LIST_FOREACH(o->cursors, l, data)
{
if (data != cur)
Eina_List *l;
Evas_Textblock_Cursor *data;
- if ((cur1 != o->cursor) && (cur2 != o->cursor))
- {
- evas_textblock_cursor_copy(cur1, o->cursor);
- }
EINA_LIST_FOREACH(o->cursors, l, data)
{
if ((data != cur1) && (data != cur2))
TB_HEAD();
_nodes_clear(obj);
- o->cursor->node = NULL;
- o->cursor->pos = 0;
- o->cursor->eol = 0;
EINA_LIST_FOREACH(o->cursors, l, cur)
{
cur->node = NULL;
o = calloc(1, sizeof(Evas_Object_Textblock));
o->magic = MAGIC_OBJ_TEXTBLOCK;
o->cursor = calloc(1, sizeof(Evas_Textblock_Cursor));
+ o->cursors = eina_list_append(NULL, o->cursor);
return o;
}
evas_object_textblock_clear(obj);
evas_object_textblock_style_set(obj, NULL);
o = (Evas_Object_Textblock *)(obj->object_data);
- free(o->cursor);
while (o->cursors)
{
Evas_Textblock_Cursor *cur;