Object Items: replace most of del_pre functions with destructor.

This change is not simple because Elementary has not been built from the
first day to work with Eo. Code had to be adapted to fit the new design.

The del_pre that have not been replaced yet can return FALSE and
prevent deletion. For these classes, code modification has to be deeper
and will be done later.
This commit is contained in:
Daniel Zaoui 2014-09-17 16:44:05 +03:00
parent 05225b162e
commit 7e396432ef
27 changed files with 130 additions and 206 deletions

View File

@ -1030,9 +1030,9 @@ _list_del(Elm_Ctxpopup_Data *sd)
ELM_SAFE_FREE(sd->list, evas_object_del);
}
EOLIAN static Eina_Bool
_elm_ctxpopup_item_elm_widget_item_del_pre(Eo *eo_ctxpopup_it,
Elm_Ctxpopup_Item_Data *ctxpopup_it)
EOLIAN static void
_elm_ctxpopup_item_eo_base_destructor(Eo *eo_ctxpopup_it,
Elm_Ctxpopup_Item_Data *ctxpopup_it)
{
Evas_Object *list;
@ -1042,22 +1042,19 @@ _elm_ctxpopup_item_elm_widget_item_del_pre(Eo *eo_ctxpopup_it,
list = elm_object_item_widget_get(ctxpopup_it->list_item);
if (eina_list_count(elm_list_items_get(list)) < 2)
if (ctxpopup_it->list_item)
eo_unref(ctxpopup_it->list_item);
sd->items = eina_list_remove(sd->items, eo_ctxpopup_it);
if (list && eina_list_count(elm_list_items_get(list)) < 2)
{
if (ctxpopup_it->list_item)
elm_object_item_del(ctxpopup_it->list_item);
sd->items = eina_list_remove(sd->items, eo_ctxpopup_it);
evas_object_hide(WIDGET(ctxpopup_it));
return EINA_TRUE;
}
else
{
if (sd->list_visible) elm_layout_sizing_eval(WIDGET(ctxpopup_it));
}
if (ctxpopup_it->list_item)
elm_object_item_del(ctxpopup_it->list_item);
sd->items = eina_list_remove(sd->items, eo_ctxpopup_it);
if (sd->list_visible) elm_layout_sizing_eval(WIDGET(ctxpopup_it));
return EINA_TRUE;
eo_do_super(eo_ctxpopup_it, ELM_CTXPOPUP_ITEM_CLASS, eo_destructor());
}
EOLIAN static Eina_Bool
@ -1266,6 +1263,7 @@ _elm_ctxpopup_item_append(Eo *obj, Elm_Ctxpopup_Data *sd, const char *label, Eva
item->list_item =
elm_list_item_append(sd->list, label, icon, NULL, _item_wrap_cb, item);
eo_ref(item->list_item);
sd->items = eina_list_append(sd->items, eo_item);
if (sd->visible) elm_layout_sizing_eval(obj);
@ -1359,6 +1357,7 @@ _elm_ctxpopup_item_prepend(Eo *obj, Elm_Ctxpopup_Data *sd, const char *label, Ev
item->list_item =
elm_list_item_prepend(sd->list, label, icon, NULL, _item_wrap_cb, item);
eo_ref(item->list_item);
sd->items = eina_list_prepend(sd->items, eo_item);
if (sd->visible) elm_layout_sizing_eval(obj);

View File

@ -269,10 +269,10 @@ _elm_hoversel_item_elm_widget_item_style_get(Eo *eo_it EINA_UNUSED,
return elm_object_style_get(VIEW(it));
}
EOLIAN static Eina_Bool
_elm_hoversel_item_elm_widget_item_del_pre(Eo *eo_item EINA_UNUSED, Elm_Hoversel_Item_Data *item)
EOLIAN static void
_elm_hoversel_item_eo_base_destructor(Eo *eo_item, Elm_Hoversel_Item_Data *item)
{
ELM_HOVERSEL_DATA_GET_OR_RETURN_VAL(WIDGET(item), sd, EINA_FALSE);
ELM_HOVERSEL_DATA_GET_OR_RETURN(WIDGET(item), sd);
elm_hoversel_hover_end(WIDGET(item));
sd->items = eina_list_remove(sd->items, eo_item);
@ -280,7 +280,7 @@ _elm_hoversel_item_elm_widget_item_del_pre(Eo *eo_item EINA_UNUSED, Elm_Hoversel
eina_stringshare_del(item->icon_file);
eina_stringshare_del(item->icon_group);
return EINA_TRUE;
eo_do_super(eo_item, ELM_HOVERSEL_ITEM_CLASS, eo_destructor());
}
EOLIAN static void
@ -304,10 +304,6 @@ _elm_hoversel_evas_object_smart_del(Eo *obj, Elm_Hoversel_Data *sd)
EINA_LIST_FREE(sd->items, eo_item)
{
ELM_HOVERSEL_ITEM_DATA_GET(eo_item, item);
eina_stringshare_del(item->label);
eina_stringshare_del(item->icon_file);
eina_stringshare_del(item->icon_group);
eo_del(eo_item);
}
elm_hoversel_hover_parent_set(obj, NULL);

View File

@ -586,13 +586,13 @@ _elm_multibuttonentry_item_elm_widget_item_part_text_get(Eo *eo_item EINA_UNUSED
return edje_object_part_text_get(item->button, src_part);
}
EOLIAN static Eina_Bool
_elm_multibuttonentry_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED,
Elm_Multibuttonentry_Item_Data *it EINA_UNUSED)
EOLIAN static void
_elm_multibuttonentry_item_eo_base_destructor(Eo *eo_it,
Elm_Multibuttonentry_Item_Data *it)
{
_button_item_del(it);
return EINA_TRUE;
eo_do_super(eo_it, ELM_MULTIBUTTONENTRY_ITEM_CLASS, eo_destructor());
}
static void

View File

@ -192,7 +192,7 @@ _item_free(Elm_Naviframe_Item_Data *it)
if ((sd->preserve) && (!sd->on_deletion))
{
/* so that elm does not delete the contents with the item's
* view after the del_pre_hook */
* view after the destructor */
elm_object_part_content_unset(VIEW(it), CONTENT_PART);
evas_object_event_callback_del
(it->content, EVAS_CALLBACK_DEL, _item_content_del_cb);
@ -527,8 +527,8 @@ _elm_naviframe_item_elm_widget_item_part_text_get(Eo *nit EINA_UNUSED,
return elm_object_part_text_get(VIEW(it), buf);
}
EOLIAN static Eina_Bool
_elm_naviframe_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Naviframe_Item_Data *it)
EOLIAN static void
_elm_naviframe_item_eo_base_destructor(Eo *eo_item, Elm_Naviframe_Item_Data *it)
{
Elm_Naviframe_Item_Data *nit = it, *prev_it = NULL;
Eina_Bool top;
@ -536,7 +536,6 @@ _elm_naviframe_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Naviframe_Item_Data
ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd);
nit->delete_me = EINA_TRUE;
if (nit->ref > 0) return EINA_FALSE;
ecore_animator_del(nit->animator);
@ -569,7 +568,7 @@ _elm_naviframe_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Naviframe_Item_Data
end:
_item_free(nit);
return EINA_TRUE;
eo_do_super(eo_item, ELM_NAVIFRAME_ITEM_CLASS, eo_destructor());
}
static void
@ -1664,10 +1663,10 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
evas_object_ref(obj);
if (it->pop_cb)
{
it->ref++;
eo_ref(eo_item);
if (!it->pop_cb(it->pop_data, eo_item))
{
it->ref--;
eo_unref(eo_item);
if (it->delete_me)
eo_do(eo_item, elm_wdg_item_del());
else
@ -1675,7 +1674,7 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
evas_object_unref(obj);
return NULL;
}
it->ref--;
eo_unref(eo_item);
}
evas_object_unref(obj);

View File

@ -766,10 +766,10 @@ _elm_popup_item_elm_widget_item_disable(Eo *eo_it, Elm_Popup_Item_Data *it)
elm_layout_signal_emit(VIEW(it), "elm,state,item,enabled", "elm");
}
EOLIAN static Eina_Bool
_elm_popup_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Data *it)
EOLIAN static void
_elm_popup_item_eo_base_destructor(Eo *eo_it, Elm_Popup_Item_Data *it)
{
ELM_POPUP_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
ELM_POPUP_ITEM_CHECK_OR_RETURN(it);
ELM_POPUP_DATA_GET(WIDGET(it), sd);
evas_object_del(it->icon);
@ -780,7 +780,7 @@ _elm_popup_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Popup_Item_Da
sd->items = NULL;
_list_del(sd);
}
return EINA_TRUE;
eo_do_super(eo_it, ELM_POPUP_ITEM_CLASS, eo_destructor());
}
EOLIAN static void

View File

@ -47,7 +47,7 @@ class Elm_Ctxpopup_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Eo.Base.destructor;
Elm_Widget_Item.disable;
Elm_Widget_Item.signal_emit;
Elm_Widget_Item.part_text.get;

View File

@ -343,8 +343,8 @@ _sizing_eval(Evas_Object *obj)
_resize_cb(NULL, NULL, obj, NULL);
}
EOLIAN static Eina_Bool
_elm_diskselector_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Diskselector_Item_Data *it)
EOLIAN static void
_elm_diskselector_item_eo_base_destructor(Eo *eo_it, Elm_Diskselector_Item_Data *it)
{
Elm_Diskselector_Item_Data *item2, *dit;
Eina_List *l;
@ -360,6 +360,8 @@ _elm_diskselector_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Diskse
sd->r_items = eina_list_remove(sd->r_items, it);
sd->items = eina_list_remove(sd->items, it);
sd->under_items = eina_list_remove(sd->under_items, it);
sd->over_items = eina_list_remove(sd->over_items, it);
if (sd->selected_item == it)
{
@ -378,10 +380,10 @@ _elm_diskselector_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Diskse
{
if (!sd->item_count)
{
evas_object_hide(sd->VIEW(first));
evas_object_hide(sd->VIEW(second));
evas_object_hide(sd->VIEW(last));
evas_object_hide(sd->VIEW(s_last));
if (sd->first) evas_object_hide(sd->VIEW(first));
if (sd->second) evas_object_hide(sd->VIEW(second));
if (sd->last) evas_object_hide(sd->VIEW(last));
if (sd->s_last) evas_object_hide(sd->VIEW(s_last));
EINA_LIST_FOREACH(sd->under_items, l, item2)
evas_object_hide(VIEW(item2));
@ -394,23 +396,30 @@ _elm_diskselector_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Diskse
dit = eina_list_nth(sd->items, 0);
if (dit)
{
eina_stringshare_replace(&sd->first->label, dit->label);
edje_object_part_text_escaped_set
(sd->VIEW(first), "elm.text", sd->first->label);
if (sd->first)
{
eina_stringshare_replace(&sd->first->label, dit->label);
edje_object_part_text_escaped_set
(sd->VIEW(first), "elm.text", sd->first->label);
}
}
dit = eina_list_nth(sd->items, 1);
if (dit)
{
eina_stringshare_replace(&sd->second->label, dit->label);
edje_object_part_text_escaped_set
(sd->VIEW(second), "elm.text", sd->second->label);
if (sd->second)
{
eina_stringshare_replace(&sd->second->label, dit->label);
edje_object_part_text_escaped_set
(sd->VIEW(second), "elm.text", sd->second->label);
}
}
// if more than 3 itmes should be displayed
for (i = 2; i < CEIL(sd->display_item_num); i++)
{
dit = eina_list_nth(sd->items, i);
item2 = eina_list_nth(sd->over_items, i - 2);
if (!dit || !item2) continue;
eina_stringshare_replace(&item2->label, dit->label);
edje_object_part_text_escaped_set
(VIEW(item2), "elm.text", item2->label);
@ -419,23 +428,30 @@ _elm_diskselector_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Diskse
dit = eina_list_nth(sd->items, eina_list_count(sd->items) - 1);
if (dit)
{
eina_stringshare_replace(&sd->last->label, dit->label);
edje_object_part_text_escaped_set
(sd->VIEW(last), "elm.text", sd->last->label);
if (sd->last)
{
eina_stringshare_replace(&sd->last->label, dit->label);
edje_object_part_text_escaped_set
(sd->VIEW(last), "elm.text", sd->last->label);
}
}
dit = eina_list_nth(sd->items, eina_list_count(sd->items) - 2);
if (dit)
{
eina_stringshare_replace(&sd->s_last->label, dit->label);
edje_object_part_text_escaped_set
(sd->VIEW(s_last), "elm.text", sd->s_last->label);
if (sd->s_last)
{
eina_stringshare_replace(&sd->s_last->label, dit->label);
edje_object_part_text_escaped_set
(sd->VIEW(s_last), "elm.text", sd->s_last->label);
}
}
// if more than 3 itmes should be displayed
for (i = 3; i <= CEIL(sd->display_item_num); i++)
{
dit = eina_list_nth(sd->items, sd->item_count - i);
item2 = eina_list_nth(sd->under_items, i - 3);
if (!dit || !item2) continue;
eina_stringshare_replace(&item2->label, dit->label);
edje_object_part_text_escaped_set
(VIEW(item2), "elm.text", item2->label);
@ -449,7 +465,7 @@ _elm_diskselector_item_elm_widget_item_del_pre(Eo *eo_it EINA_UNUSED, Elm_Diskse
_sizing_eval(obj);
return EINA_TRUE;
eo_do_super(eo_it, ELM_DISKSELECTOR_ITEM_CLASS, eo_destructor());
}
EOLIAN static void
@ -1098,14 +1114,10 @@ _scroll_drag_stop_cb(Evas_Object *obj,
}
static void
_round_item_del(Elm_Diskselector_Data *sd,
_round_item_del(Elm_Diskselector_Data *sd EINA_UNUSED,
Elm_Diskselector_Item_Data *it)
{
if (!it) return;
elm_box_unpack(sd->main_box, VIEW(it));
sd->r_items = eina_list_remove(sd->r_items, it);
eina_stringshare_del(it->label);
eo_del(EO_OBJ(it));
}
@ -1318,70 +1330,70 @@ EOLIAN static void
_elm_diskselector_evas_object_smart_del(Eo *obj, Elm_Diskselector_Data *sd)
{
Elm_Diskselector_Item_Data *it;
Eina_List *l;
Eina_List *l, *l2;
Evas_Object *blank;
/* left blank */
EINA_LIST_FOREACH (sd->left_blanks, l, blank)
EINA_LIST_FREE (sd->left_blanks, blank)
evas_object_del(blank);
/* right blank */
EINA_LIST_FOREACH (sd->right_blanks, l, blank)
EINA_LIST_FREE (sd->right_blanks, blank)
evas_object_del(blank);
if (sd->last)
{
eina_stringshare_del(sd->last->label);
evas_object_del(sd->VIEW(last));
eo_del(EO_OBJ(sd->last));
sd->last = NULL;
}
if (sd->s_last)
{
eina_stringshare_del(sd->s_last->label);
evas_object_del(sd->VIEW(s_last));
eo_del(EO_OBJ(sd->s_last));
sd->s_last = NULL;
}
if (sd->second)
{
eina_stringshare_del(sd->second->label);
evas_object_del(sd->VIEW(second));
eo_del(EO_OBJ(sd->second));
sd->second = NULL;
}
if (sd->first)
{
eina_stringshare_del(sd->first->label);
evas_object_del(sd->VIEW(first));
eo_del(EO_OBJ(sd->first));
sd->first = NULL;
}
EINA_LIST_FOREACH(sd->under_items, l, it)
EINA_LIST_FOREACH_SAFE(sd->under_items, l, l2, it)
{
if (it)
{
eina_stringshare_del(it->label);
evas_object_del(VIEW(it));
eo_del(EO_OBJ(it));
}
}
sd->under_items = eina_list_free(sd->under_items);
EINA_LIST_FOREACH(sd->over_items, l, it)
EINA_LIST_FOREACH_SAFE(sd->over_items, l, l2, it)
{
if (it)
{
eina_stringshare_del(it->label);
evas_object_del(VIEW(it));
eo_del(EO_OBJ(it));
}
}
sd->over_items = eina_list_free(sd->over_items);
EINA_LIST_FREE(sd->items, it)
EINA_LIST_FOREACH_SAFE(sd->items, l, l2, it)
{
_item_del(it);
eo_del(EO_OBJ(it));
}
sd->items = eina_list_free(sd->items);
sd->r_items = eina_list_free(sd->r_items);
ELM_SAFE_FREE(sd->scroller_move_idle_enterer, ecore_idle_enterer_del);
@ -1605,7 +1617,6 @@ _elm_diskselector_clear(Eo *obj, Elm_Diskselector_Data *sd)
sd->selected_item = NULL;
EINA_LIST_FREE(sd->items, it)
{
_item_del(it);
eo_del(EO_OBJ(it));
}

View File

@ -95,7 +95,7 @@ class Elm_Diskselector_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Eo.Base.destructor;
Elm_Widget_Item.part_text.get;
Elm_Widget_Item.part_text.set;
Elm_Widget_Item.part_content.get;

View File

@ -205,49 +205,6 @@ _sentinel_eval(Elm_Flipselector_Data *sd)
}
}
/* TODO: create a flag to avoid looping here all times */
static void
_flipselector_process_deletions(Elm_Flipselector_Data *sd)
{
Eina_List *l;
Elm_Object_Item *eo_item;
Eina_Bool skip = EINA_TRUE;
Eina_Bool sentinel_eval = EINA_FALSE;
sd->walking++; /* avoid nested deletions */
EINA_LIST_FOREACH(sd->items, l, eo_item)
{
ELM_FLIPSELECTOR_ITEM_DATA_GET(eo_item, item);
if (!item->deleted) continue;
if (sd->current == l)
{
if (sd->current == sd->sentinel) sentinel_eval = EINA_TRUE;
sd->current = eina_list_prev(sd->current);
}
sd->items = eina_list_remove(sd->items, eo_item);
if (!sd->current) sd->current = sd->items;
eo_do(eo_item, elm_wdg_item_del());
skip = EINA_FALSE;
if (eina_list_count(sd->items) <= 1)
elm_layout_signal_emit
(sd->obj, "elm,state,button,hidden", "elm");
else
elm_layout_signal_emit
(sd->obj, "elm,state,button,visible", "elm");
}
if (!skip) _update_view(sd->obj);
if (sentinel_eval) _sentinel_eval(sd);
sd->walking--;
}
static inline void
_flipselector_unwalk(Elm_Flipselector_Data *sd)
{
@ -259,8 +216,6 @@ _flipselector_unwalk(Elm_Flipselector_Data *sd)
sd->walking = 0;
}
if (sd->walking) return;
_flipselector_process_deletions(sd);
}
static void
@ -275,9 +230,8 @@ _on_item_changed(Elm_Flipselector_Data *sd)
if (item->func)
item->func((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(item)), WIDGET(item), eo_item);
if (!item->deleted)
evas_object_smart_callback_call
(sd->obj, SIG_SELECTED, eo_item);
evas_object_smart_callback_call
(sd->obj, SIG_SELECTED, eo_item);
}
static void
@ -296,22 +250,14 @@ _send_msg(Elm_Flipselector_Data *sd,
_on_item_changed(sd);
}
EOLIAN static Eina_Bool
_elm_flipselector_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Flipselector_Item_Data *item)
EOLIAN static void
_elm_flipselector_item_eo_base_destructor(Eo *eo_item, Elm_Flipselector_Item_Data *item)
{
Elm_Object_Item *eo_item2;
Eina_List *l;
ELM_FLIPSELECTOR_DATA_GET(WIDGET(item), sd);
if (sd->walking > 0)
{
item->deleted = EINA_TRUE;
return EINA_FALSE;
}
_flipselector_walk(sd);
EINA_LIST_FOREACH(sd->items, l, eo_item2)
{
if (eo_item2 == eo_item)
@ -333,11 +279,18 @@ _elm_flipselector_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Flipselector_Ite
}
}
if (eina_list_count(sd->items) <= 1)
elm_layout_signal_emit
(sd->obj, "elm,state,button,hidden", "elm");
else
elm_layout_signal_emit
(sd->obj, "elm,state,button,visible", "elm");
eina_stringshare_del(item->label);
_sentinel_eval(sd);
_flipselector_unwalk(sd);
_update_view(sd->obj);
return EINA_TRUE;
eo_do_super(eo_item, ELM_FLIPSELECTOR_ITEM_CLASS, eo_destructor());
}
EOLIAN static void
@ -709,36 +662,13 @@ _elm_flipselector_items_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
EOLIAN static Elm_Object_Item*
_elm_flipselector_first_item_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
Elm_Object_Item *eo_item;
Eina_List *l;
if (!sd->items) return NULL;
EINA_LIST_FOREACH(sd->items, l, eo_item)
{
ELM_FLIPSELECTOR_ITEM_DATA_GET(eo_item, it);
if (it->deleted) continue;
return eo_item;
}
return NULL;
return eina_list_data_get(sd->items);
}
EOLIAN static Elm_Object_Item*
_elm_flipselector_last_item_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
Elm_Object_Item *eo_item;
Eina_List *l;
if (!sd->items) return NULL;
EINA_LIST_REVERSE_FOREACH(sd->items, l, eo_item)
{
ELM_FLIPSELECTOR_ITEM_DATA_GET(eo_item, item);
if (item->deleted) continue;
return eo_item;
}
return NULL;
return eina_list_last_data_get(sd->items);
}
EOLIAN static Elm_Object_Item*
@ -768,12 +698,9 @@ _elm_flipselector_item_selected_set(Eo *eo_item,
EINA_LIST_FOREACH(sd->items, l, _eo_item)
{
ELM_FLIPSELECTOR_ITEM_DATA_GET(_eo_item, _item);
if (!_item->deleted)
{
sd->current = l;
_send_msg(sd, MSG_FLIP_UP, (char *)_item->label);
break;
}
sd->current = l;
_send_msg(sd, MSG_FLIP_UP, (char *)_item->label);
break;
}
_flipselector_unwalk(sd);
return;

View File

@ -65,7 +65,7 @@ class Elm_Flipselector_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Eo.Base.destructor;
Elm_Widget_Item.signal_emit;
Elm_Widget_Item.part_text.get;
Elm_Widget_Item.part_text.set;

View File

@ -35,8 +35,8 @@ class Elm_Hoversel_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Eo.Base.destructor;
Elm_Widget_Item.signal_emit;
Elm_Widget_Item.del_pre;
Elm_Widget_Item.part_text.get;
Elm_Widget_Item.style.get;
Elm_Widget_Item.style.set;

View File

@ -424,15 +424,15 @@ _elm_index_elm_layout_sizing_eval(Eo *obj, Elm_Index_Data *_pd EINA_UNUSED)
evas_object_size_hint_max_set(obj, -1, -1);
}
EOLIAN static Eina_Bool
_elm_index_item_elm_widget_item_del_pre(Eo *eo_item EINA_UNUSED, Elm_Index_Item_Data *it)
EOLIAN static void
_elm_index_item_eo_base_destructor(Eo *eo_item EINA_UNUSED, Elm_Index_Item_Data *it)
{
ELM_INDEX_DATA_GET(WIDGET(it), sd);
_item_free(it);
_index_box_clear(WIDGET(it), sd->level);
return EINA_TRUE;
eo_do_super(eo_item, ELM_INDEX_ITEM_CLASS, eo_destructor());
}
EOLIAN static void

View File

@ -40,7 +40,7 @@ class Elm_Index_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Eo.Base.destructor;
Elm_Widget_Item.access_register;
Elm_Widget_Item.del_pre;
}
}

View File

@ -2367,6 +2367,7 @@ _elm_list_evas_object_smart_del(Eo *obj, Elm_List_Data *sd)
ELM_LIST_ITEM_DATA_GET(eo_it, it);
/* issuing free because of "locking" item del pre hook */
_elm_list_item_free(it);
WIDGET(it) = NULL;
eo_del(EO_OBJ(it));
}

View File

@ -52,11 +52,6 @@ _item_del(Elm_Object_Item *eo_item)
_item_del(child);
eina_list_free(item->submenu.items);
eina_stringshare_del(item->label);
evas_object_del(item->submenu.hv);
evas_object_del(item->submenu.location);
eina_stringshare_del(item->icon_str);
eo_del(eo_item);
}
@ -961,13 +956,14 @@ _elm_menu_item_add_helper(Evas_Object *obj,
_sizing_eval(obj);
}
EOLIAN static Eina_Bool
_elm_menu_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Menu_Item_Data *item)
EOLIAN static void
_elm_menu_item_eo_base_destructor(Eo *eo_item, Elm_Menu_Item_Data *item)
{
ELM_MENU_DATA_GET(WIDGET(item), sd);
elm_menu_item_subitems_clear(eo_item);
eina_stringshare_del(item->label);
eina_stringshare_del(item->icon_str);
evas_object_del(item->content);
evas_object_del(item->submenu.hv);
evas_object_del(item->submenu.location);
@ -981,7 +977,7 @@ _elm_menu_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Menu_Item_Data *item)
if (sd->dbus_menu)
_elm_dbus_menu_item_delete(sd->dbus_menu, item->dbus_idx);
return EINA_TRUE;
eo_do_super(eo_item, ELM_MENU_ITEM_CLASS, eo_destructor());
}
EOLIAN static void

View File

@ -122,7 +122,7 @@ class Elm_Menu_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Eo.Base.destructor;
Elm_Widget_Item.disable;
Elm_Widget_Item.signal_emit;
Elm_Widget_Item.part_text.get;

View File

@ -46,7 +46,7 @@ class Elm_Multibuttonentry_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Eo.Base.destructor;
Elm_Widget_Item.signal_emit;
Elm_Widget_Item.part_text.get;
Elm_Widget_Item.part_text.set;

View File

@ -99,7 +99,7 @@ class Elm_Naviframe_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Eo.Base.destructor;
Elm_Widget_Item.signal_emit;
Elm_Widget_Item.part_text.set;
Elm_Widget_Item.part_text.get;

View File

@ -3,7 +3,7 @@ class Elm_Popup_Item(Elm_Widget_Item)
eo_prefix: elm_obj_popup_item;
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Eo.Base.destructor;
Elm_Widget_Item.disable;
Elm_Widget_Item.signal_emit;
Elm_Widget_Item.part_text.get;

View File

@ -489,15 +489,15 @@ _elm_segment_control_item_elm_widget_item_part_content_get(Eo *eo_item EINA_UNUS
return edje_object_part_swallow_get(VIEW(item), part);
}
static Eina_Bool
_elm_segment_control_item_elm_widget_item_del_pre(Eo *eo_item EINA_UNUSED, Elm_Segment_Control_Item_Data *item)
EOLIAN static void
_elm_segment_control_item_eo_base_destructor(Eo *eo_item, Elm_Segment_Control_Item_Data *item)
{
ELM_SEGMENT_CONTROL_DATA_GET(WIDGET(item), sd);
_item_free(item);
_update_list(sd);
return EINA_TRUE;
eo_do_super(eo_item, ELM_SEGMENT_CONTROL_ITEM_CLASS, eo_destructor());
}
static char *
@ -628,8 +628,6 @@ _elm_segment_control_evas_object_smart_del(Eo *obj, Elm_Segment_Control_Data *sd
EINA_LIST_FREE(sd->items, eo_it)
{
ELM_SEGMENT_ITEM_DATA_GET(eo_it, it);
_item_free(it);
eo_del(eo_it);
}

View File

@ -54,11 +54,11 @@ class Elm_Segment_Control_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Eo.Base.destructor;
Elm_Widget_Item.access_register;
Elm_Widget_Item.part_text.get;
Elm_Widget_Item.part_text.set;
Elm_Widget_Item.part_content.get;
Elm_Widget_Item.part_content.set;
Elm_Widget_Item.del_pre;
}
}

View File

@ -285,10 +285,10 @@ _timer_cb(void *data)
return ECORE_CALLBACK_CANCEL;
}
EOLIAN static Eina_Bool
_elm_slideshow_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Slideshow_Item_Data *item)
EOLIAN static void
_elm_slideshow_item_eo_base_destructor(Eo *eo_item, Elm_Slideshow_Item_Data *item)
{
ELM_SLIDESHOW_DATA_GET_OR_RETURN_VAL(WIDGET(item), sd, EINA_FALSE);
ELM_SLIDESHOW_DATA_GET_OR_RETURN(WIDGET(item), sd);
if (sd->previous == item) sd->previous = NULL;
if (sd->current == item)
@ -312,7 +312,7 @@ _elm_slideshow_item_elm_widget_item_del_pre(Eo *eo_item, Elm_Slideshow_Item_Data
if ((VIEW(item)) && (item->itc->func.del))
item->itc->func.del(elm_object_item_data_get(eo_item), VIEW(item));
return EINA_TRUE;
eo_do_super(eo_item, ELM_SLIDESHOW_ITEM_CLASS, eo_destructor());
}
EOLIAN static void

View File

@ -36,6 +36,6 @@ class Elm_Slideshow_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Elm_Widget_Item.del_pre;
Eo.Base.destructor;
}
}

View File

@ -2219,8 +2219,8 @@ _access_state_cb(void *data, Evas_Object *obj EINA_UNUSED)
return NULL;
}
EOLIAN static Eina_Bool
_elm_toolbar_item_elm_widget_item_del_pre(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item)
EOLIAN static void
_elm_toolbar_item_eo_base_destructor(Eo *eo_item, Elm_Toolbar_Item_Data *item)
{
Elm_Toolbar_Item_Data *next = NULL;
Evas_Object *obj;
@ -2248,7 +2248,7 @@ _elm_toolbar_item_elm_widget_item_del_pre(Eo *eo_item EINA_UNUSED, Elm_Toolbar_I
if (item != sd->more_item)
eo_do(obj, elm_obj_widget_theme_apply());
return EINA_TRUE;
eo_do_super(eo_item, ELM_TOOLBAR_ITEM_CLASS, eo_destructor());
}
static void

View File

@ -415,8 +415,8 @@ class Elm_Toolbar_Item(Elm_Widget_Item)
}
implements {
Eo.Base.constructor;
Eo.Base.destructor;
Elm_Widget_Item.disable;
Elm_Widget_Item.del_pre;
Elm_Widget_Item.focus.set;
Elm_Widget_Item.focus.get;
Elm_Widget_Item.part_text.get;

View File

@ -48,7 +48,6 @@ struct _Elm_Flipselector_Item_Data
const char *label;
Evas_Smart_Cb func;
int deleted : 1;
};
#define ELM_FLIPSELECTOR_DATA_GET(o, sd) \

View File

@ -60,8 +60,6 @@ struct _Elm_Naviframe_Item_Data
Evas_Coord minw;
Evas_Coord minh;
int ref;
Eina_Bool title_enabled : 1;
Eina_Bool popping : 1; /**< a flag to notify the item is on poping. this flag is set true at the start of item pop. */
Eina_Bool delete_me : 1; /**< a flag to notify the item is on deletion. this flag is set true at the start of item deletion. */