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:
parent
05225b162e
commit
7e396432ef
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -36,6 +36,6 @@ class Elm_Slideshow_Item(Elm_Widget_Item)
|
|||
}
|
||||
implements {
|
||||
Eo.Base.constructor;
|
||||
Elm_Widget_Item.del_pre;
|
||||
Eo.Base.destructor;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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. */
|
||||
|
|
Loading…
Reference in New Issue