* @param ln the layout line to be freed, must not be NULL.
*/
static void
-_line_free(Evas_Object_Textblock_Line *ln)
+_line_free(Efl_Canvas_Textblock_Data *o, Evas_Object_Textblock_Line *ln)
{
/* Items are freed from the logical list, except for the ellip item */
+ if (o->ellip_ti && (_ITEM(o->ellip_ti)->ln == ln))
+ _ITEM(o->ellip_ti)->ln = NULL;
+
if (ln) free(ln);
}
}
}
- _line_free(ln);
+ _line_free(o, ln);
}
}
c->par->lines = (Evas_Object_Textblock_Line *)eina_inlist_remove(
EINA_INLIST_GET(c->par->lines), EINA_INLIST_GET(c->ln));
- if (c->o->ellip_ti && (_ITEM(c->o->ellip_ti)->ln == c->ln))
- _ITEM(c->o->ellip_ti)->ln = NULL;
-
- _line_free(c->ln);
+ _line_free(c->o, c->ln);
c->ln = NULL;
c->vertical_ellipsis = EINA_TRUE;
size_t len = 1; /* The length of _ellip_str */
/* We can free it here, cause there's only one ellipsis item per tb. */
- if (c->o->ellip_ti) _item_free(c->o, c->evas_o, NULL, _ITEM(c->o->ellip_ti));
+ if (c->o->ellip_ti) _item_free(c->o, c->evas_o, _ITEM(c->o->ellip_ti)->ln, _ITEM(c->o->ellip_ti));
c->o->ellip_ti = ellip_ti = _layout_text_item_new(c, cur_it->format);
ellip_ti->parent.text_node = cur_it->text_node;
ellip_ti->parent.text_pos = cur_it->text_pos;