* @param it the layout item to be freed
*/
static void
-_item_free(Evas_Public_Data *evas,
- Efl_Canvas_Textblock_Data *o,
+_item_free(Efl_Canvas_Textblock_Data *o,
Evas_Object_Protected_Data *evas_o,
Evas_Object_Textblock_Line *ln, Evas_Object_Textblock_Item *it)
{
//Evas_Public_Data *evas = efl_data_scope_get(eo_evas, EVAS_CANVAS_CLASS);
Eina_Bool async = ti->gfx_filter->do_async;
- _image_safe_unref(evas, ti->gfx_filter->output, async);
+ _image_safe_unref(evas_o->layer->evas, ti->gfx_filter->output, async);
ti->gfx_filter->output = NULL;
}
EINA_INLIST_REMOVE(o->gfx_filter.text_items, ti->gfx_filter);
* Free the visual lines in the paragraph (logical items are kept)
*/
static void
-_paragraph_clear(Evas_Public_Data *evas,
- Efl_Canvas_Textblock_Data *o, Evas_Object_Protected_Data *obj,
+_paragraph_clear(Efl_Canvas_Textblock_Data *o,
+ Evas_Object_Protected_Data *obj,
Evas_Object_Textblock_Paragraph *par)
{
while (par->lines)
if (ti->parent.ln == ln)
{
o->hyphen_items = eina_list_remove_list(o->hyphen_items, i);
- _item_free(evas, o, obj, NULL, _ITEM(ti));
+ _item_free(o, obj, NULL, _ITEM(ti));
}
}
}
* Free the layout paragraph and all of it's lines and logical items.
*/
static void
-_paragraph_free(Evas_Public_Data *evas,
- Efl_Canvas_Textblock_Data *o, Evas_Object_Protected_Data *obj,
+_paragraph_free(Efl_Canvas_Textblock_Data *o,
+ Evas_Object_Protected_Data *obj,
Evas_Object_Textblock_Paragraph *par)
{
- _paragraph_clear(evas, o, obj, par);
+ _paragraph_clear(o, obj, par);
{
Evas_Object_Textblock_Item *it;
EINA_LIST_FREE(par->logical_items, it)
{
- _item_free(evas, o, obj, NULL, it);
+ _item_free(o, obj, NULL, it);
}
}
#ifdef BIDI_SUPPORT
EINA_INLIST_FOREACH(EINA_INLIST_GET(c->paragraphs), par)
{
- _paragraph_clear(c->evas, c->o, c->evas_o, par);
+ _paragraph_clear(c->o, c->evas_o, par);
}
}
* @param c the context - Not NULL.
*/
static void
-_paragraphs_free(Evas_Public_Data *evas,
- Efl_Canvas_Textblock_Data *o, Evas_Object_Protected_Data *obj,
+_paragraphs_free(Efl_Canvas_Textblock_Data *o,
+ Evas_Object_Protected_Data *obj,
Evas_Object_Textblock_Paragraph *pars)
{
o->num_paragraphs = 0;
par = (Evas_Object_Textblock_Paragraph *) pars;
pars = (Evas_Object_Textblock_Paragraph *)eina_inlist_remove(EINA_INLIST_GET(pars), EINA_INLIST_GET(par));
- _paragraph_free(evas, o, obj, par);
+ _paragraph_free(o, obj, par);
}
}
item1->parent.merge = EINA_FALSE;
item1->parent.visually_deleted = EINA_FALSE;
- _item_free(c->evas, c->o, c->evas_o, NULL, _ITEM(item2));
+ _item_free(c->o, c->evas_o, NULL, _ITEM(item2));
}
/**
}
else
{
- _item_free(c->evas, c->o, c->evas_o, NULL, _ITEM(c->hyphen_ti));
+ _item_free(c->o, c->evas_o, NULL, _ITEM(c->hyphen_ti));
c->hyphen_ti = NULL;
}
}
/* hyphen item cleanup */
if (!found_hyphen && c->hyphen_ti)
{
- _item_free(c->evas, c->o, c->evas_o, NULL, _ITEM(c->hyphen_ti));
+ _item_free(c->o, c->evas_o, NULL, _ITEM(c->hyphen_ti));
c->hyphen_ti = NULL;
}
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->evas, c->o, c->evas_o, NULL, _ITEM(c->o->ellip_ti));
+ if (c->o->ellip_ti) _item_free(c->o, c->evas_o, NULL, _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;
{
Eina_List *itr, *itr_next;
Evas_Object_Textblock_Item *ititr, *prev_it = NULL;
- _paragraph_clear(c->evas, c->o, c->evas_o, c->par);
+ _paragraph_clear(c->o, c->evas_o, c->par);
EINA_LIST_FOREACH_SAFE(c->par->logical_items, itr, itr_next, ititr)
{
if (ititr->merge && prev_it &&
c->paragraphs = (Evas_Object_Textblock_Paragraph *)
eina_inlist_remove(EINA_INLIST_GET(c->paragraphs),
EINA_INLIST_GET(c->par));
- _paragraph_free(c->evas, c->o, c->evas_o, c->par);
+ _paragraph_free(c->o, c->evas_o, c->par);
c->par = tmp_par;
}
c->paragraphs = (Evas_Object_Textblock_Paragraph *)
eina_inlist_remove(EINA_INLIST_GET(c->paragraphs),
EINA_INLIST_GET(prev_par));
- _paragraph_free(c->evas, c->o, c->evas_o, prev_par);
+ _paragraph_free(c->o, c->evas_o, prev_par);
}
else
{
c->paragraphs = (Evas_Object_Textblock_Paragraph *)
eina_inlist_remove(EINA_INLIST_GET(c->paragraphs),
EINA_INLIST_GET(c->par));
- _paragraph_free(c->evas, c->o, c->evas_o, c->par);
+ _paragraph_free(c->o, c->evas_o, c->par);
c->par = tmp_par;
}
while (c->par)
{
c->par->visible = 0;
- _paragraph_clear(c->evas, c->o, c->evas_o, c->par);
+ _paragraph_clear(c->o, c->evas_o, c->par);
c->par = (Evas_Object_Textblock_Paragraph *)
EINA_INLIST_GET(c->par)->next;
}
}
}
+ if (o->paragraphs)
+ {
+ _paragraphs_free(o, obj, o->paragraphs);
+ o->paragraphs = NULL;
+ }
_nodes_clear(eo_obj);
Efl_Text_Cursor_Handle *co = o->cursor;
if (c->hyphen_ti)
{
- _item_free(c->evas, c->o, c->evas_o, NULL, _ITEM(c->hyphen_ti));
+ _item_free(c->o, c->evas_o, NULL, _ITEM(c->hyphen_ti));
}
c->hyphen_ti = hyphen_ti = _layout_text_item_new(c, cur_ti->parent.format);
hyphen_ti->parent.text_node = cur_ti->parent.text_node;
Eina_List *l;
Efl_Text_Cursor_Handle *cur;
Efl_Text_Cursor_Handle *co;
- Evas *eo_e;
- Evas_Public_Data *evas;
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
- eo_e = evas_object_evas_get(eo_obj);
- evas = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
evas_object_async_block(obj);
Efl_Canvas_Textblock_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
if (o->paragraphs)
{
- _paragraphs_free(evas, o, obj, o->paragraphs);
+ _paragraphs_free(o, obj, o->paragraphs);
o->paragraphs = NULL;
}
if (o->repch) eina_stringshare_del(o->repch);
if (o->ellip_ti)
{
- Evas *eo_e;
- Evas_Public_Data *evas;
- eo_e = evas_object_evas_get(eo_obj);
- evas = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
- _item_free(evas, o, obj, NULL, _ITEM(o->ellip_ti));
+ _item_free(o, obj, NULL, _ITEM(o->ellip_ti));
}
if (o->bidi_delimiters) eina_stringshare_del(o->bidi_delimiters);
_format_command_shutdown();