forked from enlightenment/efl
elementary/menu, ctxpopup, index, segment_control, diskselector, multibuttonentry, toolbar, naviframe, slideshow, hoversel, filpselector - deprecated xxxx_item_del() APIs.
But instead, made to use the elm_object_item_del() APIs for this, elm_widget_item needed to provide elm_widget_item_del_pre_hook. SVN revision: 67010
This commit is contained in:
parent
7e1da5af29
commit
56a881bd35
|
@ -2219,7 +2219,7 @@
|
|||
* @skipline _del_cb
|
||||
* @until }
|
||||
*
|
||||
* To delete an item we simple need to call elm_diskselector_item_del() with
|
||||
* To delete an item we simple need to call elm_object_item_del() with
|
||||
* a pointer for such item.
|
||||
*
|
||||
* If you need, you can get selected item with
|
||||
|
|
|
@ -168,7 +168,7 @@ test_index2_it_del(void *data, Evas_Object *obj, void *event_info __UNUSED__)
|
|||
if (!it_next)
|
||||
{
|
||||
iit = elm_index_item_find(gui->id, it);
|
||||
if (iit) elm_index_item_del(gui->id, iit);
|
||||
if (iit) elm_object_item_del(iit);
|
||||
elm_list_item_del(it);
|
||||
return;
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ test_index2_it_del(void *data, Evas_Object *obj, void *event_info __UNUSED__)
|
|||
if (label[0] == label_next[0])
|
||||
elm_object_item_data_set(iit, it_next);
|
||||
else
|
||||
elm_index_item_del(gui->id, iit);
|
||||
elm_object_item_del(iit);
|
||||
|
||||
elm_list_item_del(it);
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ _navi_pop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
|||
void
|
||||
_navi_it_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
elm_naviframe_item_del(data);
|
||||
elm_object_item_del(data);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -112,7 +112,7 @@ _del_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
|||
Evas_Object *ds = data;
|
||||
|
||||
selected_ds_it = elm_diskselector_selected_item_get(ds);
|
||||
elm_diskselector_item_del(selected_ds_it);
|
||||
elm_object_item_del(selected_ds_it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -54,7 +54,7 @@ _del_cb(void *data,
|
|||
Evas_Object *fp = data;
|
||||
|
||||
it = elm_flipselector_selected_item_get(fp);
|
||||
if (it) elm_flipselector_item_del(it);
|
||||
if (it) elm_object_item_del(it);
|
||||
}
|
||||
|
||||
void /* underflow callback */
|
||||
|
|
|
@ -80,7 +80,7 @@ static void
|
|||
_sel(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
if(!elm_hoversel_expanded_get(obj) && event_info != data)
|
||||
elm_hoversel_item_del(event_info);
|
||||
elm_object_item_del(event_info);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -60,7 +60,7 @@ _item_del(void *data __UNUSED__,
|
|||
" %s (pointing to %s)\n", elm_index_item_letter_get(iit),
|
||||
elm_object_item_text_get(lit));
|
||||
|
||||
elm_index_item_del(d.index, lit);
|
||||
elm_object_item_del(lit);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -13,7 +13,7 @@ _del_it(void *data, Evas_Object *obj, void *event_info)
|
|||
Elm_Object_Item *menu_it = elm_menu_first_item_get(data);
|
||||
menu_it = elm_menu_item_next_get(menu_it);
|
||||
l = elm_menu_item_subitems_get(menu_it);
|
||||
elm_menu_item_del(eina_list_data_get(l));
|
||||
elm_object_item_del(eina_list_data_get(l));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -63,7 +63,7 @@ elm_main(int argc __UNUSED__, char **argv __UNUSED__)
|
|||
elm_segment_control_item_insert_at(sc, NULL, "Inserted at", count - 1);
|
||||
|
||||
seg_it = elm_segment_control_item_insert_at(sc, NULL, "To be deleted", 2);
|
||||
elm_segment_control_item_del(seg_it);
|
||||
elm_object_item_del(seg_it);
|
||||
|
||||
elm_segment_control_item_insert_at(sc, NULL, "To be deleted", 2);
|
||||
elm_segment_control_item_del_at(sc, 2);
|
||||
|
|
|
@ -118,7 +118,7 @@ _web_free_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *
|
|||
Tab_Data *td = data;
|
||||
|
||||
if (td->tab)
|
||||
elm_toolbar_item_del(td->tab);
|
||||
elm_object_item_del(td->tab);
|
||||
|
||||
free(td);
|
||||
}
|
||||
|
|
|
@ -1225,12 +1225,44 @@ _remove_items(Widget_Data *wd)
|
|||
if (item->icon)
|
||||
evas_object_del(item->icon);
|
||||
wd->items = eina_list_remove(wd->items, item);
|
||||
free(item);
|
||||
elm_widget_item_free(item);
|
||||
}
|
||||
|
||||
wd->items = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
|
||||
Widget_Data *wd;
|
||||
Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
|
||||
|
||||
wd = elm_widget_data_get(WIDGET(ctxpopup_it));
|
||||
if (!wd) return;
|
||||
|
||||
if (ctxpopup_it->icon)
|
||||
evas_object_del(ctxpopup_it->icon);
|
||||
if (VIEW(ctxpopup_it))
|
||||
evas_object_del(VIEW(ctxpopup_it));
|
||||
|
||||
eina_stringshare_del(ctxpopup_it->label);
|
||||
|
||||
wd->items = eina_list_remove(wd->items, ctxpopup_it);
|
||||
|
||||
wd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN;
|
||||
|
||||
if (eina_list_count(wd->items) < 1)
|
||||
{
|
||||
evas_object_hide(WIDGET(ctxpopup_it));
|
||||
return;
|
||||
}
|
||||
|
||||
if (wd->visible)
|
||||
_sizing_eval(WIDGET(ctxpopup_it));
|
||||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
elm_ctxpopup_add(Evas_Object *parent)
|
||||
{
|
||||
|
@ -1450,6 +1482,7 @@ elm_ctxpopup_item_append(Evas_Object *obj, const char *label,
|
|||
item = elm_widget_item_new(obj, Elm_Ctxpopup_Item);
|
||||
if (!item) return NULL;
|
||||
|
||||
elm_widget_item_del_pre_hook_set(item, _item_del_pre_hook);
|
||||
elm_widget_item_disable_hook_set(item, _item_disable_hook);
|
||||
elm_widget_item_text_set_hook_set(item, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(item, _item_text_get_hook);
|
||||
|
@ -1492,36 +1525,7 @@ elm_ctxpopup_item_append(Evas_Object *obj, const char *label,
|
|||
EAPI void
|
||||
elm_ctxpopup_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
|
||||
Widget_Data *wd;
|
||||
Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
|
||||
|
||||
wd = elm_widget_data_get(WIDGET(ctxpopup_it));
|
||||
if (!wd) return;
|
||||
|
||||
if (ctxpopup_it->icon)
|
||||
evas_object_del(ctxpopup_it->icon);
|
||||
if (VIEW(ctxpopup_it))
|
||||
evas_object_del(VIEW(ctxpopup_it));
|
||||
|
||||
eina_stringshare_del(ctxpopup_it->label);
|
||||
|
||||
wd->items = eina_list_remove(wd->items, ctxpopup_it);
|
||||
|
||||
wd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN;
|
||||
|
||||
elm_widget_item_del(ctxpopup_it);
|
||||
|
||||
if (eina_list_count(wd->items) < 1)
|
||||
{
|
||||
evas_object_hide(WIDGET(ctxpopup_it));
|
||||
return;
|
||||
}
|
||||
|
||||
if (wd->visible)
|
||||
_sizing_eval(WIDGET(ctxpopup_it));
|
||||
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -144,17 +144,6 @@ EAPI Eina_Bool elm_ctxpopup_horizontal_get(const Evas_Object
|
|||
*/
|
||||
EAPI Elm_Object_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data);
|
||||
|
||||
/**
|
||||
* @brief Delete the given item in a ctxpopup object.
|
||||
*
|
||||
* @param it Ctxpopup item to be deleted
|
||||
*
|
||||
* @see elm_ctxpopup_item_append()
|
||||
*
|
||||
* @ingroup Ctxpopup
|
||||
*/
|
||||
EAPI void elm_ctxpopup_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief Set the direction priority of a ctxpopup.
|
||||
*
|
||||
|
|
|
@ -56,11 +56,10 @@ _del_pre_hook(Evas_Object *obj)
|
|||
elm_hoversel_hover_parent_set(obj, NULL);
|
||||
EINA_LIST_FREE(wd->items, item)
|
||||
{
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
eina_stringshare_del(item->label);
|
||||
eina_stringshare_del(item->icon_file);
|
||||
eina_stringshare_del(item->icon_group);
|
||||
elm_widget_item_del(item);
|
||||
elm_widget_item_free(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -310,6 +309,21 @@ _item_text_get_hook(const Elm_Object_Item *it, const char *part)
|
|||
return ((Elm_Hoversel_Item *) it)->label;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Widget_Data *wd;
|
||||
Elm_Hoversel_Item *item = (Elm_Hoversel_Item *) it;
|
||||
wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
elm_hoversel_hover_end(WIDGET(item));
|
||||
wd->items = eina_list_remove(wd->items, item);
|
||||
eina_stringshare_del(item->label);
|
||||
eina_stringshare_del(item->icon_file);
|
||||
eina_stringshare_del(item->icon_group);
|
||||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
elm_hoversel_add(Evas_Object *parent)
|
||||
{
|
||||
|
@ -465,7 +479,11 @@ elm_hoversel_clear(Evas_Object *obj)
|
|||
ELM_CHECK_WIDTYPE(obj, widtype);
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (!wd) return;
|
||||
EINA_LIST_FOREACH_SAFE(wd->items, l, ll, it) elm_hoversel_item_del(it);
|
||||
EINA_LIST_FOREACH_SAFE(wd->items, l, ll, it)
|
||||
{
|
||||
_item_del_pre_hook(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
}
|
||||
|
||||
EAPI const Eina_List *
|
||||
|
@ -485,6 +503,7 @@ elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file
|
|||
if (!wd) return NULL;
|
||||
Elm_Hoversel_Item *item = elm_widget_item_new(obj, Elm_Hoversel_Item);
|
||||
if (!item) return NULL;
|
||||
elm_widget_item_del_pre_hook_set(item, _item_del_pre_hook);
|
||||
elm_widget_item_text_get_hook_set(item, _item_text_get_hook);
|
||||
wd->items = eina_list_append(wd->items, item);
|
||||
item->label = eina_stringshare_add(label);
|
||||
|
@ -498,18 +517,7 @@ elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file
|
|||
EAPI void
|
||||
elm_hoversel_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Widget_Data *wd;
|
||||
Elm_Hoversel_Item *item = (Elm_Hoversel_Item *) it;
|
||||
wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
elm_hoversel_hover_end(WIDGET(item));
|
||||
wd->items = eina_list_remove(wd->items, item);
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
eina_stringshare_del(item->label);
|
||||
eina_stringshare_del(item->icon_file);
|
||||
eina_stringshare_del(item->icon_group);
|
||||
elm_widget_item_del(item);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -123,7 +123,7 @@ EAPI Eina_Bool elm_hoversel_expanded_get(const Evas_Object *o
|
|||
* @warning Should @b not be called while the hoversel is active; use
|
||||
* elm_hoversel_expanded_get() to check first.
|
||||
*
|
||||
* @see elm_hoversel_item_del()
|
||||
* @see elm_object_item_del()
|
||||
*/
|
||||
EAPI void elm_hoversel_clear(Evas_Object *obj);
|
||||
|
||||
|
@ -159,18 +159,6 @@ EAPI const Eina_List *elm_hoversel_items_get(const Evas_Object *obj)
|
|||
*/
|
||||
EAPI Elm_Object_Item *elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data);
|
||||
|
||||
/**
|
||||
* @brief Delete an item from the hoversel
|
||||
*
|
||||
* @param it The item to delete
|
||||
*
|
||||
* This deletes the item from the hoversel (should not be called while the
|
||||
* hoversel is active; use elm_hoversel_expanded_get() to check first).
|
||||
*
|
||||
* @see elm_hoversel_item_add()
|
||||
*/
|
||||
EAPI void elm_hoversel_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief This sets the icon for the given hoversel item.
|
||||
*
|
||||
|
|
|
@ -692,7 +692,6 @@ _del_button_item(Elm_Multibuttonentry_Item *item)
|
|||
|
||||
_del_button_obj(obj, _item->button);
|
||||
|
||||
free(_item);
|
||||
if (wd->current == l)
|
||||
wd->current = NULL;
|
||||
break;
|
||||
|
@ -760,6 +759,13 @@ _resize_button(Evas_Object *btn, Evas_Coord *realw, Evas_Coord *vieww)
|
|||
if (vieww) *vieww = vw;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
_del_button_item((Elm_Multibuttonentry_Item *) it);
|
||||
}
|
||||
|
||||
static Elm_Multibuttonentry_Item*
|
||||
_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const Elm_Multibuttonentry_Item *reference, void *data)
|
||||
{
|
||||
|
@ -799,6 +805,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
|
|||
item = elm_widget_item_new(obj, Elm_Multibuttonentry_Item);
|
||||
if (item)
|
||||
{
|
||||
elm_widget_item_del_pre_hook_set(item, _item_del_pre_hook);
|
||||
elm_widget_item_text_set_hook_set(item, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(item, _item_text_get_hook);
|
||||
elm_widget_item_data_set(item, data);
|
||||
|
@ -954,6 +961,7 @@ _evas_mbe_key_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
|
|||
if (item)
|
||||
{
|
||||
_del_button_item(item);
|
||||
elm_widget_item_free(item);
|
||||
elm_object_focus_set(wd->entry, EINA_TRUE);
|
||||
}
|
||||
}
|
||||
|
@ -1586,8 +1594,7 @@ elm_multibuttonentry_clear(Evas_Object *obj)
|
|||
EAPI void
|
||||
elm_multibuttonentry_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
_del_button_item((Elm_Multibuttonentry_Item *) it);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI const char *
|
||||
|
|
|
@ -199,14 +199,6 @@ EAPI void elm_multibuttonentry_item_select(Elm_Object_Item
|
|||
*/
|
||||
EAPI void elm_multibuttonentry_item_unselect_all(Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* Delete a given item
|
||||
*
|
||||
* @param it The item
|
||||
*
|
||||
*/
|
||||
EAPI void elm_multibuttonentry_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Remove all items in the multibuttonentry.
|
||||
*
|
||||
|
|
|
@ -131,6 +131,7 @@ static Evas_Object * _title_icon_unset(Elm_Naviframe_Item *it);
|
|||
static Evas_Object * _title_content_unset(Elm_Naviframe_Item *it,
|
||||
const char *part);
|
||||
static void _item_del(Elm_Naviframe_Item *it);
|
||||
static void _item_del_pre_hook(Elm_Object_Item *it);
|
||||
static void _pushed_finished(void *data,
|
||||
Evas_Object *obj,
|
||||
const char *emission,
|
||||
|
@ -175,6 +176,7 @@ _del_hook(Evas_Object *obj)
|
|||
Elm_Naviframe_Item);
|
||||
wd->stack = eina_inlist_remove(wd->stack, wd->stack->last);
|
||||
_item_del(it);
|
||||
elm_widget_item_free(it);
|
||||
if (!wd->stack) break;
|
||||
}
|
||||
}
|
||||
|
@ -867,8 +869,38 @@ _item_del(Elm_Naviframe_Item *it)
|
|||
}
|
||||
|
||||
eina_stringshare_del(it->style);
|
||||
}
|
||||
|
||||
elm_widget_item_del(it);
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Elm_Naviframe_Item *navi_it;
|
||||
Widget_Data *wd;
|
||||
|
||||
navi_it =(Elm_Naviframe_Item *) it;
|
||||
wd = elm_widget_data_get(WIDGET(navi_it));
|
||||
if (!wd) return;
|
||||
|
||||
if (it == elm_naviframe_top_item_get(WIDGET(navi_it)))
|
||||
{
|
||||
wd->stack = eina_inlist_remove(wd->stack, EINA_INLIST_GET(navi_it));
|
||||
_item_del(navi_it);
|
||||
elm_widget_item_free(navi_it);
|
||||
//If the item is only one, the stack will be empty
|
||||
if (!wd->stack) return;
|
||||
navi_it = EINA_INLIST_CONTAINER_GET(wd->stack->last,
|
||||
Elm_Naviframe_Item);
|
||||
evas_object_show(VIEW(navi_it));
|
||||
evas_object_raise(VIEW(navi_it));
|
||||
edje_object_signal_emit(VIEW(navi_it), "elm,state,visible", "elm");
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->stack = eina_inlist_remove(wd->stack, EINA_INLIST_GET(navi_it));
|
||||
_item_del(navi_it);
|
||||
elm_widget_item_free(navi_it);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -904,6 +936,7 @@ _popped_finished(void *data,
|
|||
SIG_POP_FINISHED,
|
||||
data);
|
||||
_item_del(data);
|
||||
elm_widget_item_free(data);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1061,6 +1094,7 @@ _item_new(Evas_Object *obj,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
|
||||
elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
|
||||
elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
|
||||
|
@ -1278,7 +1312,10 @@ elm_naviframe_item_pop(Evas_Object *obj)
|
|||
edje_object_message_signal_process(VIEW(prev_it));
|
||||
}
|
||||
else
|
||||
{
|
||||
_item_del(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
|
||||
return content;
|
||||
}
|
||||
|
@ -1306,6 +1343,8 @@ elm_naviframe_item_pop_to(Elm_Object_Item *it)
|
|||
prev_l = l->prev;
|
||||
wd->stack = eina_inlist_remove(wd->stack, l);
|
||||
_item_del(EINA_INLIST_CONTAINER_GET(l, Elm_Naviframe_Item));
|
||||
elm_widget_item_free(EINA_INLIST_CONTAINER_GET(l,
|
||||
Elm_Naviframe_Item));
|
||||
l = prev_l;
|
||||
}
|
||||
elm_naviframe_item_pop(WIDGET(navi_it));
|
||||
|
@ -1347,31 +1386,7 @@ elm_naviframe_item_promote(Elm_Object_Item *it)
|
|||
EAPI void
|
||||
elm_naviframe_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Elm_Naviframe_Item *navi_it;
|
||||
Widget_Data *wd;
|
||||
|
||||
navi_it =(Elm_Naviframe_Item *) it;
|
||||
wd = elm_widget_data_get(WIDGET(navi_it));
|
||||
if (!wd) return;
|
||||
|
||||
if (it == elm_naviframe_top_item_get(WIDGET(navi_it)))
|
||||
{
|
||||
wd->stack = eina_inlist_remove(wd->stack, EINA_INLIST_GET(navi_it));
|
||||
_item_del(navi_it);
|
||||
//If the item is only one, the stack will be empty
|
||||
if (!wd->stack) return;
|
||||
navi_it = EINA_INLIST_CONTAINER_GET(wd->stack->last,
|
||||
Elm_Naviframe_Item);
|
||||
evas_object_show(VIEW(navi_it));
|
||||
evas_object_raise(VIEW(navi_it));
|
||||
edje_object_signal_emit(VIEW(navi_it), "elm,state,visible", "elm");
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->stack = eina_inlist_remove(wd->stack, EINA_INLIST_GET(navi_it));
|
||||
_item_del(navi_it);
|
||||
}
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -188,19 +188,6 @@ EAPI void elm_naviframe_item_pop_to(Elm_Object_Item *it);
|
|||
*/
|
||||
EAPI void elm_naviframe_item_promote(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief Delete the given item instantly.
|
||||
*
|
||||
* @param it The naviframe item
|
||||
*
|
||||
* This just deletes the given item from the naviframe item list instantly.
|
||||
* So this would not emit any signals for view transitions but just change
|
||||
* the current view if the given item is a top one.
|
||||
*
|
||||
* @ingroup Naviframe
|
||||
*/
|
||||
EAPI void elm_naviframe_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief preserve the content objects when items are popped.
|
||||
*
|
||||
|
|
|
@ -433,6 +433,18 @@ EINA_DEPRECATED EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Eva
|
|||
*/
|
||||
EINA_DEPRECATED EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* @brief Delete the given item in a ctxpopup object.
|
||||
*
|
||||
* @param it Ctxpopup item to be deleted
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @see elm_ctxpopup_item_append()
|
||||
*
|
||||
* @ingroup Ctxpopup
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_ctxpopup_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Set the label for a given file selector button widget
|
||||
*
|
||||
|
@ -729,6 +741,19 @@ EINA_DEPRECATED EAPI const char *elm_hoversel_item_label_get(const Elm_Object_I
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void elm_hoversel_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func);
|
||||
|
||||
/**
|
||||
* @brief Delete an item from the hoversel
|
||||
*
|
||||
* @param it The item to delete
|
||||
*
|
||||
* This deletes the item from the hoversel (should not be called while the
|
||||
* hoversel is active; use elm_hoversel_expanded_get() to check first).
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @see elm_hoversel_item_add()
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_hoversel_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Set actionslider labels.
|
||||
*
|
||||
|
@ -1429,6 +1454,22 @@ EINA_DEPRECATED EAPI const char *elm_diskselector_item_label_get(cons
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void elm_diskselector_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func);
|
||||
|
||||
/**
|
||||
* Delete them item from the diskselector.
|
||||
*
|
||||
* @param it The item of diskselector to be deleted.
|
||||
*
|
||||
* If deleting all diskselector items is required, elm_diskselector_clear()
|
||||
* should be used instead of getting items list and deleting each one.
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @see elm_diskselector_clear()
|
||||
* @see elm_diskselector_item_append()
|
||||
*
|
||||
* @ingroup Diskselector
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_diskselector_item_del(Elm_Object_Item *it);
|
||||
|
||||
EINA_DEPRECATED EAPI void elm_factory_content_set(Evas_Object *obj, Evas_Object *content);
|
||||
EINA_DEPRECATED EAPI Evas_Object *elm_factory_content_get(const Evas_Object *obj);
|
||||
|
||||
|
@ -1458,6 +1499,16 @@ EINA_DEPRECATED EAPI const char *elm_flipselector_item_label_get(const Elm_Objec
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label);
|
||||
|
||||
/**
|
||||
* Delete a given item from a flip selector widget.
|
||||
*
|
||||
* @param it The item to delete
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @ingroup Flipselector
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_flipselector_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Make a given Elementary object the focused one.
|
||||
*
|
||||
|
@ -1600,6 +1651,21 @@ EINA_DEPRECATED EAPI void elm_index_item_data_set(Elm_Object_Item *it, const vo
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void elm_index_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func);
|
||||
|
||||
/**
|
||||
* Remove an item from a given index widget, <b>to be referenced by
|
||||
* it's data value</b>.
|
||||
*
|
||||
* @param obj The index object
|
||||
* @param item The item to be removed from @p obj
|
||||
*
|
||||
* If a deletion callback is set, via elm_object_item_del_cb_set(),
|
||||
* that callback function will be called by this one.
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @ingroup Index
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_index_item_del(Evas_Object *obj, Elm_Object_Item *item);
|
||||
|
||||
/**
|
||||
* @brief Set the label on the label object
|
||||
*
|
||||
|
@ -1879,6 +1945,16 @@ EINA_DEPRECATED EAPI void elm_menu_item_del_cb_set(Elm_O
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void elm_menu_item_data_set(Elm_Object_Item *it, const void *data);
|
||||
|
||||
/**
|
||||
* @brief Deletes an item from the menu.
|
||||
*
|
||||
* @param it The item to delete.
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @see elm_menu_item_add()
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_menu_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief Set the content of the notify widget
|
||||
*
|
||||
|
@ -2536,6 +2612,16 @@ EINA_DEPRECATED EAPI Evas_Object *elm_slider_end_get(const Evas_Object *obj);
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void *elm_slideshow_item_data_get(const Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Delete a given item from a slideshow widget.
|
||||
*
|
||||
* @param it The slideshow item
|
||||
*
|
||||
* @deprecated Use elm_object_item_de() instead
|
||||
* @ingroup Slideshow
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_slideshow_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Get the toolbar object from an item.
|
||||
*
|
||||
|
@ -2687,6 +2773,18 @@ EINA_DEPRECATED EAPI Eina_Bool elm_toolbar_orientation_get(const Evas_Object
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void elm_toolbar_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func);
|
||||
|
||||
/**
|
||||
* Delete them item from the toolbar.
|
||||
*
|
||||
* @param it The item of toolbar to be deleted.
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @see elm_toolbar_item_append()
|
||||
*
|
||||
* @ingroup Toolbar
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_toolbar_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief Link a Elm_Payer with an Elm_Video object.
|
||||
*
|
||||
|
@ -2753,6 +2851,19 @@ EINA_DEPRECATED EAPI void elm_segment_control_item_label_set(Elm_Ob
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void elm_segment_control_item_icon_set(Elm_Object_Item *it, Evas_Object *icon);
|
||||
|
||||
/**
|
||||
* Remove a segment control item from its parent, deleting it.
|
||||
*
|
||||
* @param it The item to be removed.
|
||||
*
|
||||
* Items can be added with elm_segment_control_item_add() or
|
||||
* elm_segment_control_item_insert_at().
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @ingroup SegmentControl
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_segment_control_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Get the label
|
||||
*
|
||||
|
@ -2796,6 +2907,32 @@ EINA_DEPRECATED EAPI const char *elm_multibuttonentry_item_label_
|
|||
*/
|
||||
EINA_DEPRECATED EAPI void elm_multibuttonentry_item_label_set(Elm_Object_Item *it, const char *str);
|
||||
|
||||
/**
|
||||
* Delete a given item
|
||||
*
|
||||
* @param it The item
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
*
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_multibuttonentry_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief Delete the given item instantly.
|
||||
*
|
||||
* @param it The naviframe item
|
||||
*
|
||||
* This just deletes the given item from the naviframe item list instantly.
|
||||
* So this would not emit any signals for view transitions but just change
|
||||
* the current view if the given item is a top one.
|
||||
*
|
||||
* @deprecated Use elm_object_item_del() instead
|
||||
* @ingroup Naviframe
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_naviframe_item_del(Elm_Object_Item *it);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Sets the disabled/enabled state of a list item.
|
||||
*
|
||||
|
|
|
@ -112,6 +112,223 @@ _diskselector_object_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj, vo
|
|||
wd->idler = ecore_idle_enterer_before_add(_move_scroller, data);
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del(Elm_Diskselector_Item *item)
|
||||
{
|
||||
if (!item) return;
|
||||
eina_stringshare_del(item->label);
|
||||
if (item->icon)
|
||||
evas_object_del(item->icon);
|
||||
}
|
||||
|
||||
static int
|
||||
_count_letter(const char *str)
|
||||
{
|
||||
int pos = 0;
|
||||
int code = 0, chnum;
|
||||
|
||||
for (chnum = 0; ; chnum++)
|
||||
{
|
||||
pos = evas_string_char_next_get(str, pos, &code);
|
||||
if (code == 0) break;
|
||||
}
|
||||
return chnum;
|
||||
}
|
||||
|
||||
static int
|
||||
_check_letter(const char *str, int length)
|
||||
{
|
||||
int pos = 0;
|
||||
int code = 0, chnum;
|
||||
|
||||
for (chnum = 0; ; chnum++)
|
||||
{
|
||||
if (chnum == length) break;
|
||||
pos = evas_string_char_next_get(str, pos, &code);
|
||||
if (code == 0) break;
|
||||
}
|
||||
return pos;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_check_string(void *data)
|
||||
{
|
||||
int mid, steps, length, diff;
|
||||
Elm_Diskselector_Item *it;
|
||||
Eina_List *list, *l;
|
||||
Evas_Coord ox, ow;
|
||||
char buf[1024];
|
||||
Widget_Data *wd = data;
|
||||
|
||||
evas_object_geometry_get(wd->scroller, &ox, NULL, &ow, NULL);
|
||||
if (ow <= 0)
|
||||
return EINA_FALSE;
|
||||
if (!wd->init)
|
||||
return EINA_FALSE;
|
||||
if (!wd->round)
|
||||
list = wd->items;
|
||||
else
|
||||
list = wd->r_items;
|
||||
|
||||
EINA_LIST_FOREACH(list, l, it)
|
||||
{
|
||||
Evas_Coord x, w;
|
||||
int len;
|
||||
evas_object_geometry_get(VIEW(it), &x, NULL, &w, NULL);
|
||||
/* item not visible */
|
||||
if ((x + w <= ox) || (x >= ox + ow))
|
||||
continue;
|
||||
|
||||
len = _count_letter(it->label);
|
||||
// // FIXME: len should be # of ut8f letters. ie count using utf8 string walk, not stringshare len
|
||||
// len = eina_stringshare_strlen(it->label);
|
||||
|
||||
if (x <= ox + 5)
|
||||
edje_object_signal_emit(VIEW(it), "elm,state,left_side",
|
||||
"elm");
|
||||
else if (x + w >= ox + ow - 5)
|
||||
edje_object_signal_emit(VIEW(it), "elm,state,right_side",
|
||||
"elm");
|
||||
else
|
||||
{
|
||||
if ((wd->len_threshold) && (len > wd->len_threshold))
|
||||
edje_object_signal_emit(VIEW(it), "elm,state,center_small",
|
||||
"elm");
|
||||
else
|
||||
edje_object_signal_emit(VIEW(it), "elm,state,center",
|
||||
"elm");
|
||||
}
|
||||
|
||||
// if len is les that the limit len, skip anyway
|
||||
if (len <= wd->len_side)
|
||||
continue;
|
||||
|
||||
steps = len - wd->len_side + 1;
|
||||
mid = x + w / 2;
|
||||
if (mid <= ox + ow / 2)
|
||||
diff = (ox + ow / 2) - mid;
|
||||
else
|
||||
diff = mid - (ox + ow / 2);
|
||||
|
||||
length = len - (int)(diff * steps / (ow / 3));
|
||||
length = MAX(length, wd->len_side);
|
||||
// limit string len to "length" ut8f chars
|
||||
length = _check_letter(it->label, length);
|
||||
// cut it off at byte mark returned form _check_letter
|
||||
strncpy(buf, it->label, length);
|
||||
buf[length] = '\0';
|
||||
edje_object_part_text_set(VIEW(it), "elm.text", buf);
|
||||
}
|
||||
|
||||
if (wd->check_idler)
|
||||
ecore_idle_enterer_del(wd->check_idler);
|
||||
wd->check_idler = NULL;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Elm_Diskselector_Item *item, *item2, *dit;
|
||||
Eina_List *l;
|
||||
int i = 0;
|
||||
Widget_Data *wd;
|
||||
item = (Elm_Diskselector_Item *) it;
|
||||
wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
|
||||
elm_box_unpack(wd->main_box, VIEW(item));
|
||||
|
||||
if (wd->round)
|
||||
wd->r_items = eina_list_remove(wd->r_items, item);
|
||||
|
||||
wd->items = eina_list_remove(wd->items, item);
|
||||
|
||||
if (wd->selected_item == item)
|
||||
{
|
||||
dit = (Elm_Diskselector_Item *) eina_list_nth(wd->items, 0);
|
||||
if (dit != item)
|
||||
wd->selected_item = dit;
|
||||
else
|
||||
wd->selected_item = eina_list_nth(wd->items, 1);
|
||||
|
||||
_selected_item_indicate(wd->selected_item);
|
||||
}
|
||||
|
||||
_item_del(item);
|
||||
wd->item_count -= 1;
|
||||
|
||||
if (wd->round)
|
||||
{
|
||||
if (!wd->item_count)
|
||||
{
|
||||
evas_object_hide(wd->VIEW(first));
|
||||
evas_object_hide(wd->VIEW(second));
|
||||
evas_object_hide(wd->VIEW(last));
|
||||
evas_object_hide(wd->VIEW(s_last));
|
||||
|
||||
EINA_LIST_FOREACH(wd->under_items, l, item2)
|
||||
evas_object_hide(VIEW(item2));
|
||||
|
||||
EINA_LIST_FOREACH(wd->over_items, l, item2)
|
||||
evas_object_hide(VIEW(item2));
|
||||
}
|
||||
else
|
||||
{
|
||||
dit = eina_list_nth(wd->items, 0);
|
||||
if (dit)
|
||||
{
|
||||
eina_stringshare_replace(&wd->first->label, dit->label);
|
||||
edje_object_part_text_set(wd->VIEW(first), "elm.text",
|
||||
wd->first->label);
|
||||
}
|
||||
dit = eina_list_nth(wd->items, 1);
|
||||
if (dit)
|
||||
{
|
||||
eina_stringshare_replace(&wd->second->label, dit->label);
|
||||
edje_object_part_text_set(wd->VIEW(second), "elm.text",
|
||||
wd->second->label);
|
||||
}
|
||||
// if more than 3 itmes should be displayed
|
||||
for (i = 2; i < CEIL(wd->display_item_num); i++)
|
||||
{
|
||||
dit = eina_list_nth(wd->items, i);
|
||||
item2 = eina_list_nth(wd->over_items, i - 2);
|
||||
eina_stringshare_replace(&item2->label, dit->label);
|
||||
edje_object_part_text_set(VIEW(item2), "elm.text", item2->label);
|
||||
}
|
||||
|
||||
dit = eina_list_nth(wd->items, eina_list_count(wd->items) - 1);
|
||||
if (dit)
|
||||
{
|
||||
eina_stringshare_replace(&wd->last->label, dit->label);
|
||||
edje_object_part_text_set(wd->VIEW(last), "elm.text",
|
||||
wd->last->label);
|
||||
}
|
||||
dit = eina_list_nth(wd->items, eina_list_count(wd->items) - 2);
|
||||
if (dit)
|
||||
{
|
||||
eina_stringshare_replace(&wd->s_last->label, dit->label);
|
||||
edje_object_part_text_set(wd->VIEW(s_last), "elm.text",
|
||||
wd->s_last->label);
|
||||
}
|
||||
// if more than 3 itmes should be displayed
|
||||
for (i = 3; i <= CEIL(wd->display_item_num); i++)
|
||||
{
|
||||
dit = eina_list_nth(wd->items, wd->item_count - i);
|
||||
item2 = eina_list_nth(wd->under_items, i - 3);
|
||||
eina_stringshare_replace(&item2->label, dit->label);
|
||||
edje_object_part_text_set(VIEW(item2), "elm.text",
|
||||
item2->label);
|
||||
}
|
||||
}
|
||||
}
|
||||
wd->check_idler = ecore_idle_enterer_before_add(_check_string, wd);
|
||||
_sizing_eval(wd->self);
|
||||
|
||||
}
|
||||
|
||||
static Elm_Diskselector_Item *
|
||||
_item_new(Evas_Object *obj, Evas_Object *icon, const char *label, Evas_Smart_Cb func, const void *data)
|
||||
{
|
||||
|
@ -121,6 +338,7 @@ _item_new(Evas_Object *obj, Evas_Object *icon, const char *label, Evas_Smart_Cb
|
|||
it = elm_widget_item_new(obj, Elm_Diskselector_Item);
|
||||
if (!it) return NULL;
|
||||
|
||||
elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
|
||||
elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
|
||||
elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
|
||||
|
@ -154,16 +372,6 @@ _item_new(Evas_Object *obj, Evas_Object *icon, const char *label, Evas_Smart_Cb
|
|||
return it;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del(Elm_Diskselector_Item *item)
|
||||
{
|
||||
if (!item) return;
|
||||
eina_stringshare_del(item->label);
|
||||
if (item->icon)
|
||||
evas_object_del(item->icon);
|
||||
elm_widget_item_del(item);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_data_get(Widget_Data *wd)
|
||||
{
|
||||
|
@ -254,7 +462,11 @@ _del_pre_hook(Evas_Object * obj)
|
|||
}
|
||||
}
|
||||
|
||||
EINA_LIST_FREE(wd->items, it) _item_del(it);
|
||||
EINA_LIST_FREE(wd->items, it)
|
||||
{
|
||||
_item_del(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
eina_list_free(wd->r_items);
|
||||
}
|
||||
|
||||
|
@ -409,111 +621,6 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
|
|||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
_count_letter(const char *str)
|
||||
{
|
||||
int pos = 0;
|
||||
int code = 0, chnum;
|
||||
|
||||
for (chnum = 0; ; chnum++)
|
||||
{
|
||||
pos = evas_string_char_next_get(str, pos, &code);
|
||||
if (code == 0) break;
|
||||
}
|
||||
return chnum;
|
||||
}
|
||||
|
||||
static int
|
||||
_check_letter(const char *str, int length)
|
||||
{
|
||||
int pos = 0;
|
||||
int code = 0, chnum;
|
||||
|
||||
for (chnum = 0; ; chnum++)
|
||||
{
|
||||
if (chnum == length) break;
|
||||
pos = evas_string_char_next_get(str, pos, &code);
|
||||
if (code == 0) break;
|
||||
}
|
||||
return pos;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_check_string(void *data)
|
||||
{
|
||||
int mid, steps, length, diff;
|
||||
Elm_Diskselector_Item *it;
|
||||
Eina_List *list, *l;
|
||||
Evas_Coord ox, ow;
|
||||
char buf[1024];
|
||||
Widget_Data *wd = data;
|
||||
|
||||
evas_object_geometry_get(wd->scroller, &ox, NULL, &ow, NULL);
|
||||
if (ow <= 0)
|
||||
return EINA_FALSE;
|
||||
if (!wd->init)
|
||||
return EINA_FALSE;
|
||||
if (!wd->round)
|
||||
list = wd->items;
|
||||
else
|
||||
list = wd->r_items;
|
||||
|
||||
EINA_LIST_FOREACH(list, l, it)
|
||||
{
|
||||
Evas_Coord x, w;
|
||||
int len;
|
||||
evas_object_geometry_get(VIEW(it), &x, NULL, &w, NULL);
|
||||
/* item not visible */
|
||||
if ((x + w <= ox) || (x >= ox + ow))
|
||||
continue;
|
||||
|
||||
len = _count_letter(it->label);
|
||||
// // FIXME: len should be # of ut8f letters. ie count using utf8 string walk, not stringshare len
|
||||
// len = eina_stringshare_strlen(it->label);
|
||||
|
||||
if (x <= ox + 5)
|
||||
edje_object_signal_emit(VIEW(it), "elm,state,left_side",
|
||||
"elm");
|
||||
else if (x + w >= ox + ow - 5)
|
||||
edje_object_signal_emit(VIEW(it), "elm,state,right_side",
|
||||
"elm");
|
||||
else
|
||||
{
|
||||
if ((wd->len_threshold) && (len > wd->len_threshold))
|
||||
edje_object_signal_emit(VIEW(it), "elm,state,center_small",
|
||||
"elm");
|
||||
else
|
||||
edje_object_signal_emit(VIEW(it), "elm,state,center",
|
||||
"elm");
|
||||
}
|
||||
|
||||
// if len is les that the limit len, skip anyway
|
||||
if (len <= wd->len_side)
|
||||
continue;
|
||||
|
||||
steps = len - wd->len_side + 1;
|
||||
mid = x + w / 2;
|
||||
if (mid <= ox + ow / 2)
|
||||
diff = (ox + ow / 2) - mid;
|
||||
else
|
||||
diff = mid - (ox + ow / 2);
|
||||
|
||||
length = len - (int)(diff * steps / (ow / 3));
|
||||
length = MAX(length, wd->len_side);
|
||||
// limit string len to "length" ut8f chars
|
||||
length = _check_letter(it->label, length);
|
||||
// cut it off at byte mark returned form _check_letter
|
||||
strncpy(buf, it->label, length);
|
||||
buf[length] = '\0';
|
||||
edje_object_part_text_set(VIEW(it), "elm.text", buf);
|
||||
}
|
||||
|
||||
if (wd->check_idler)
|
||||
ecore_idle_enterer_del(wd->check_idler);
|
||||
wd->check_idler = NULL;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_selected_item_indicate(Elm_Diskselector_Item *it)
|
||||
{
|
||||
|
@ -664,8 +771,7 @@ _round_item_del(Widget_Data *wd, Elm_Diskselector_Item *it)
|
|||
elm_box_unpack(wd->main_box, VIEW(it));
|
||||
wd->r_items = eina_list_remove(wd->r_items, it);
|
||||
eina_stringshare_del(it->label);
|
||||
evas_object_del(VIEW(it));
|
||||
free(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -873,6 +979,7 @@ _item_content_get_hook(const Elm_Object_Item *it, const char *part)
|
|||
return ((Elm_Diskselector_Item *) it)->icon;
|
||||
}
|
||||
|
||||
|
||||
EAPI Evas_Object *
|
||||
elm_diskselector_add(Evas_Object *parent)
|
||||
{
|
||||
|
@ -1107,7 +1214,11 @@ elm_diskselector_clear(Evas_Object *obj)
|
|||
if (!wd->items) return;
|
||||
|
||||
wd->selected_item = NULL;
|
||||
EINA_LIST_FREE(wd->items, it) _item_del(it);
|
||||
EINA_LIST_FREE(wd->items, it)
|
||||
{
|
||||
_item_del(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
_round_items_del(wd);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
@ -1165,103 +1276,7 @@ elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *i
|
|||
EAPI void
|
||||
elm_diskselector_item_del(Elm_Object_Item * it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Elm_Diskselector_Item *item, *item2, *dit;
|
||||
Eina_List *l;
|
||||
int i = 0;
|
||||
Widget_Data *wd;
|
||||
item = (Elm_Diskselector_Item *) it;
|
||||
wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
|
||||
elm_box_unpack(wd->main_box, VIEW(item));
|
||||
|
||||
if (wd->round)
|
||||
wd->r_items = eina_list_remove(wd->r_items, item);
|
||||
|
||||
wd->items = eina_list_remove(wd->items, item);
|
||||
|
||||
if (wd->selected_item == item)
|
||||
{
|
||||
dit = (Elm_Diskselector_Item *) eina_list_nth(wd->items, 0);
|
||||
if (dit != item)
|
||||
wd->selected_item = dit;
|
||||
else
|
||||
wd->selected_item = eina_list_nth(wd->items, 1);
|
||||
|
||||
_selected_item_indicate(wd->selected_item);
|
||||
}
|
||||
|
||||
_item_del(item);
|
||||
wd->item_count -= 1;
|
||||
|
||||
if (wd->round)
|
||||
{
|
||||
if (!wd->item_count)
|
||||
{
|
||||
evas_object_hide(wd->VIEW(first));
|
||||
evas_object_hide(wd->VIEW(second));
|
||||
evas_object_hide(wd->VIEW(last));
|
||||
evas_object_hide(wd->VIEW(s_last));
|
||||
|
||||
EINA_LIST_FOREACH(wd->under_items, l, item2)
|
||||
evas_object_hide(VIEW(item2));
|
||||
|
||||
EINA_LIST_FOREACH(wd->over_items, l, item2)
|
||||
evas_object_hide(VIEW(item2));
|
||||
}
|
||||
else
|
||||
{
|
||||
dit = eina_list_nth(wd->items, 0);
|
||||
if (dit)
|
||||
{
|
||||
eina_stringshare_replace(&wd->first->label, dit->label);
|
||||
edje_object_part_text_set(wd->VIEW(first), "elm.text",
|
||||
wd->first->label);
|
||||
}
|
||||
dit = eina_list_nth(wd->items, 1);
|
||||
if (dit)
|
||||
{
|
||||
eina_stringshare_replace(&wd->second->label, dit->label);
|
||||
edje_object_part_text_set(wd->VIEW(second), "elm.text",
|
||||
wd->second->label);
|
||||
}
|
||||
// if more than 3 itmes should be displayed
|
||||
for (i = 2; i < CEIL(wd->display_item_num); i++)
|
||||
{
|
||||
dit = eina_list_nth(wd->items, i);
|
||||
item2 = eina_list_nth(wd->over_items, i - 2);
|
||||
eina_stringshare_replace(&item2->label, dit->label);
|
||||
edje_object_part_text_set(VIEW(item2), "elm.text", item2->label);
|
||||
}
|
||||
|
||||
dit = eina_list_nth(wd->items, eina_list_count(wd->items) - 1);
|
||||
if (dit)
|
||||
{
|
||||
eina_stringshare_replace(&wd->last->label, dit->label);
|
||||
edje_object_part_text_set(wd->VIEW(last), "elm.text",
|
||||
wd->last->label);
|
||||
}
|
||||
dit = eina_list_nth(wd->items, eina_list_count(wd->items) - 2);
|
||||
if (dit)
|
||||
{
|
||||
eina_stringshare_replace(&wd->s_last->label, dit->label);
|
||||
edje_object_part_text_set(wd->VIEW(s_last), "elm.text",
|
||||
wd->s_last->label);
|
||||
}
|
||||
// if more than 3 itmes should be displayed
|
||||
for (i = 3; i <= CEIL(wd->display_item_num); i++)
|
||||
{
|
||||
dit = eina_list_nth(wd->items, wd->item_count - i);
|
||||
item2 = eina_list_nth(wd->under_items, i - 3);
|
||||
eina_stringshare_replace(&item2->label, dit->label);
|
||||
edje_object_part_text_set(VIEW(item2), "elm.text",
|
||||
item2->label);
|
||||
}
|
||||
}
|
||||
}
|
||||
wd->check_idler = ecore_idle_enterer_before_add(_check_string, wd);
|
||||
_sizing_eval(wd->self);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI const char *
|
||||
|
|
|
@ -227,7 +227,7 @@ EAPI void elm_diskselector_scroller_policy_set(Evas_Object *ob
|
|||
*
|
||||
* @param obj The diskselector object.
|
||||
*
|
||||
* @see elm_diskselector_item_del()
|
||||
* @see elm_object_item_del()
|
||||
* @see elm_diskselector_item_append()
|
||||
*
|
||||
* @ingroup Diskselector
|
||||
|
@ -242,7 +242,7 @@ EAPI void elm_diskselector_clear(Evas_Object *obj);
|
|||
* or @c NULL on failure.
|
||||
*
|
||||
* @see elm_diskselector_item_append()
|
||||
* @see elm_diskselector_item_del()
|
||||
* @see elm_object_item_del()
|
||||
* @see elm_diskselector_clear()
|
||||
*
|
||||
* @ingroup Diskselector
|
||||
|
@ -271,7 +271,7 @@ EAPI const Eina_List *elm_diskselector_items_get(const Evas_Object *obj);
|
|||
* to the right.
|
||||
*
|
||||
* Items created with this method can be deleted with
|
||||
* elm_diskselector_item_del().
|
||||
* elm_object_item_del().
|
||||
*
|
||||
* Associated @p data can be properly freed when item is deleted if a
|
||||
* callback function is set with elm_object_item_del_cb_set().
|
||||
|
@ -290,7 +290,7 @@ EAPI const Eina_List *elm_diskselector_items_get(const Evas_Object *obj);
|
|||
* elm_diskselector_item_append(disk, "label", ic, NULL, NULL);
|
||||
* @endcode
|
||||
*
|
||||
* @see elm_diskselector_item_del()
|
||||
* @see elm_object_item_del()
|
||||
* @see elm_diskselector_clear()
|
||||
* @see elm_icon_add()
|
||||
*
|
||||
|
@ -298,22 +298,6 @@ EAPI const Eina_List *elm_diskselector_items_get(const Evas_Object *obj);
|
|||
*/
|
||||
EAPI Elm_Object_Item *elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data);
|
||||
|
||||
|
||||
/**
|
||||
* Delete them item from the diskselector.
|
||||
*
|
||||
* @param it The item of diskselector to be deleted.
|
||||
*
|
||||
* If deleting all diskselector items is required, elm_diskselector_clear()
|
||||
* should be used instead of getting items list and deleting each one.
|
||||
*
|
||||
* @see elm_diskselector_clear()
|
||||
* @see elm_diskselector_item_append()
|
||||
*
|
||||
* @ingroup Diskselector
|
||||
*/
|
||||
EAPI void elm_diskselector_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Get the selected item.
|
||||
*
|
||||
|
|
|
@ -57,6 +57,7 @@ static void _update_view(Evas_Object *obj);
|
|||
static void _callbacks_set(Evas_Object *obj);
|
||||
static void _flip_up(Widget_Data *wd);
|
||||
static void _flip_down(Widget_Data *wd);
|
||||
static void _item_del_pre_hook(Elm_Object_Item *it);
|
||||
|
||||
static const char SIG_SELECTED[] = "selected";
|
||||
static const char SIG_UNDERFLOWED[] = "underflowed";
|
||||
|
@ -143,6 +144,7 @@ _item_new(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *d
|
|||
it = elm_widget_item_new(obj, Elm_Flipselector_Item);
|
||||
if (!it) return NULL;
|
||||
|
||||
elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
|
||||
elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
|
||||
elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
|
||||
|
@ -164,7 +166,7 @@ static inline void
|
|||
_item_free(Elm_Flipselector_Item *it)
|
||||
{
|
||||
eina_stringshare_del(it->label);
|
||||
elm_widget_item_del(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -574,6 +576,51 @@ _callbacks_set(Evas_Object *obj)
|
|||
"", _signal_val_change_stop, obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Widget_Data *wd;
|
||||
Elm_Flipselector_Item *item, *item2;
|
||||
Eina_List *l;
|
||||
|
||||
item = (Elm_Flipselector_Item *) it;
|
||||
wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
|
||||
if (wd->walking > 0)
|
||||
{
|
||||
item->deleted = EINA_TRUE;
|
||||
return;
|
||||
}
|
||||
|
||||
_flipselector_walk(wd);
|
||||
|
||||
EINA_LIST_FOREACH(wd->items, l, item2)
|
||||
{
|
||||
if (item2 == item)
|
||||
{
|
||||
wd->items = eina_list_remove_list(wd->items, l);
|
||||
if (wd->current == l)
|
||||
{
|
||||
wd->current = l->prev;
|
||||
if (!wd->current) wd->current = l->next;
|
||||
if (wd->current)
|
||||
{
|
||||
item2 = wd->current->data;
|
||||
_send_msg(wd, MSG_FLIP_DOWN, (char *)item2->label);
|
||||
}
|
||||
else
|
||||
_send_msg(wd, MSG_FLIP_DOWN, "");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
eina_stringshare_del(item->label);
|
||||
_sentinel_eval(wd);
|
||||
_flipselector_unwalk(wd);
|
||||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
elm_flipselector_add(Evas_Object *parent)
|
||||
{
|
||||
|
@ -836,46 +883,7 @@ elm_flipselector_item_selected_get(const Elm_Object_Item *it)
|
|||
EAPI void
|
||||
elm_flipselector_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Widget_Data *wd;
|
||||
Elm_Flipselector_Item *item, *item2;
|
||||
Eina_List *l;
|
||||
|
||||
item = (Elm_Flipselector_Item *) it;
|
||||
wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
|
||||
if (wd->walking > 0)
|
||||
{
|
||||
item->deleted = EINA_TRUE;
|
||||
return;
|
||||
}
|
||||
|
||||
_flipselector_walk(wd);
|
||||
|
||||
EINA_LIST_FOREACH(wd->items, l, item2)
|
||||
{
|
||||
if (item2 == item)
|
||||
{
|
||||
wd->items = eina_list_remove_list(wd->items, l);
|
||||
if (wd->current == l)
|
||||
{
|
||||
wd->current = l->prev;
|
||||
if (!wd->current) wd->current = l->next;
|
||||
if (wd->current)
|
||||
{
|
||||
item2 = wd->current->data;
|
||||
_send_msg(wd, MSG_FLIP_DOWN, (char *)item2->label);
|
||||
}
|
||||
else
|
||||
_send_msg(wd, MSG_FLIP_DOWN, "");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
_item_free(item);
|
||||
_sentinel_eval(wd);
|
||||
_flipselector_unwalk(wd);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI const char *
|
||||
|
|
|
@ -145,7 +145,7 @@ EAPI Elm_Object_Item *elm_flipselector_item_prepend(Evas_Object *obj,
|
|||
* freed. Use the list members with functions like
|
||||
* elm_object_item_text_set(),
|
||||
* elm_object_item_text_get(),
|
||||
* elm_flipselector_item_del(),
|
||||
* elm_object_item_del(),
|
||||
* elm_flipselector_item_selected_get(),
|
||||
* elm_flipselector_item_selected_set().
|
||||
*
|
||||
|
@ -231,15 +231,6 @@ EAPI void elm_flipselector_item_selected_set(Elm_Object_I
|
|||
*/
|
||||
EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Delete a given item from a flip selector widget.
|
||||
*
|
||||
* @param it The item to delete
|
||||
*
|
||||
* @ingroup Flipselector
|
||||
*/
|
||||
EAPI void elm_flipselector_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Gets the item before @p item in a flip selector widget's
|
||||
* internal list of items.
|
||||
|
|
|
@ -55,10 +55,16 @@ static void
|
|||
_del_pre_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
Elm_Index_Item *it;
|
||||
if (!wd) return;
|
||||
_index_box_clear(obj, wd->bx[wd->level], wd->level);
|
||||
_index_box_clear(obj, wd->bx[0], 0);
|
||||
while (wd->items) _item_free(wd->items->data);
|
||||
while (wd->items)
|
||||
{
|
||||
it = wd->items->data;
|
||||
_item_free(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
if (wd->delay) ecore_timer_del(wd->delay);
|
||||
}
|
||||
|
||||
|
@ -183,6 +189,16 @@ _sizing_eval(Evas_Object *obj)
|
|||
evas_object_size_hint_max_set(obj, maxw, maxh);
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Widget_Data *wd = elm_widget_data_get(WIDGET(it));
|
||||
if (!wd) return;
|
||||
_item_free((Elm_Index_Item *) it);
|
||||
_index_box_clear(WIDGET(it), wd->bx[wd->level], wd->level);
|
||||
}
|
||||
|
||||
static Elm_Index_Item *
|
||||
_item_new(Evas_Object *obj, const char *letter, const void *item)
|
||||
{
|
||||
|
@ -191,6 +207,7 @@ _item_new(Evas_Object *obj, const char *letter, const void *item)
|
|||
if (!wd) return NULL;
|
||||
it = elm_widget_item_new(obj, Elm_Index_Item);
|
||||
if (!it) return NULL;
|
||||
elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
|
||||
it->letter = eina_stringshare_add(letter);
|
||||
it->base.data = item;
|
||||
it->level = wd->level;
|
||||
|
@ -215,9 +232,7 @@ _item_free(Elm_Index_Item *it)
|
|||
Widget_Data *wd = elm_widget_data_get(WIDGET(it));
|
||||
if (!wd) return;
|
||||
wd->items = eina_list_remove(wd->items, it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
eina_stringshare_del(it->letter);
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
|
||||
// FIXME: always have index filled
|
||||
|
@ -743,6 +758,7 @@ elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *i
|
|||
if (cmp_data_func(p_it->base.data, it->base.data) >= 0)
|
||||
p_it->base.data = it->base.data;
|
||||
_item_free(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -750,14 +766,9 @@ elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *i
|
|||
}
|
||||
|
||||
EAPI void
|
||||
elm_index_item_del(Evas_Object *obj, Elm_Object_Item *it)
|
||||
elm_index_item_del(Evas_Object *obj __UNUSED__, Elm_Object_Item *it)
|
||||
{
|
||||
ELM_CHECK_WIDTYPE(obj, widtype);
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (!wd) return;
|
||||
_item_free((Elm_Index_Item *) it);
|
||||
_index_box_clear(obj, wd->bx[wd->level], wd->level);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI Elm_Object_Item *
|
||||
|
@ -783,7 +794,11 @@ elm_index_item_clear(Evas_Object *obj)
|
|||
if (it->level != wd->level) continue;
|
||||
clear = eina_list_append(clear, it);
|
||||
}
|
||||
EINA_LIST_FREE(clear, it) _item_free(it);
|
||||
EINA_LIST_FREE(clear, it)
|
||||
{
|
||||
_item_free(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -239,20 +239,6 @@ EAPI void elm_index_item_prepend_relative(Evas_Object *obj, con
|
|||
*/
|
||||
EAPI void elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func);
|
||||
|
||||
/**
|
||||
* Remove an item from a given index widget, <b>to be referenced by
|
||||
* it's data value</b>.
|
||||
*
|
||||
* @param obj The index object
|
||||
* @param item The item to be removed from @p obj
|
||||
*
|
||||
* If a deletion callback is set, via elm_object_item_del_cb_set(),
|
||||
* that callback function will be called by this one.
|
||||
*
|
||||
* @ingroup Index
|
||||
*/
|
||||
EAPI void elm_index_item_del(Evas_Object *obj, Elm_Object_Item *item);
|
||||
|
||||
/**
|
||||
* Find a given index widget's item, <b>using item data</b>.
|
||||
*
|
||||
|
|
|
@ -58,8 +58,6 @@ _del_item(Elm_Menu_Item *item)
|
|||
{
|
||||
Elm_Menu_Item *child;
|
||||
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
|
||||
EINA_LIST_FREE(item->submenu.items, child)
|
||||
_del_item(child);
|
||||
|
||||
|
@ -67,7 +65,7 @@ _del_item(Elm_Menu_Item *item)
|
|||
if (item->submenu.hv) evas_object_del(item->submenu.hv);
|
||||
if (item->submenu.location) evas_object_del(item->submenu.location);
|
||||
if (item->icon_str) eina_stringshare_del(item->icon_str);
|
||||
elm_widget_item_del(item);
|
||||
elm_widget_item_free(item);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -692,6 +690,28 @@ _elm_menu_item_add_helper(Evas_Object *obj, Elm_Menu_Item *parent, Elm_Menu_Item
|
|||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
|
||||
Elm_Object_Item *_item;
|
||||
|
||||
EINA_LIST_FREE(item->submenu.items, _item) elm_object_item_del(_item);
|
||||
if (item->label) eina_stringshare_del(item->label);
|
||||
if (item->content) evas_object_del(item->content);
|
||||
if (item->submenu.hv) evas_object_del(item->submenu.hv);
|
||||
if (item->submenu.location) evas_object_del(item->submenu.location);
|
||||
|
||||
if (item->parent)
|
||||
item->parent->submenu.items = eina_list_remove(item->parent->submenu.items, item);
|
||||
else
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(WIDGET(item));
|
||||
wd->items = eina_list_remove(wd->items, item);
|
||||
}
|
||||
}
|
||||
|
||||
EAPI Elm_Object_Item *
|
||||
elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data)
|
||||
{
|
||||
|
@ -710,6 +730,7 @@ elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, c
|
|||
return NULL;
|
||||
}
|
||||
|
||||
elm_widget_item_del_pre_hook_set(subitem, _item_del_pre_hook);
|
||||
elm_widget_item_disable_hook_set(subitem, _item_disable_hook);
|
||||
elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
|
||||
|
@ -745,6 +766,7 @@ elm_menu_item_add_object(Evas_Object *obj, Elm_Object_Item *parent, Evas_Object
|
|||
subitem = elm_widget_item_new(obj, Elm_Menu_Item);
|
||||
if (!subitem) return NULL;
|
||||
|
||||
elm_widget_item_del_pre_hook_set(subitem, _item_del_pre_hook);
|
||||
elm_widget_item_disable_hook_set(subitem, _item_disable_hook);
|
||||
elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
|
||||
|
@ -840,6 +862,7 @@ elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent)
|
|||
subitem = elm_widget_item_new(obj, Elm_Menu_Item);
|
||||
if (!subitem) return NULL;
|
||||
|
||||
elm_widget_item_del_pre_hook_set(subitem, _item_del_pre_hook);
|
||||
elm_widget_item_disable_hook_set(subitem, _item_disable_hook);
|
||||
elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
|
||||
|
@ -894,27 +917,7 @@ elm_menu_item_is_separator(Elm_Object_Item *it)
|
|||
EAPI void
|
||||
elm_menu_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
|
||||
Elm_Object_Item *_item;
|
||||
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
|
||||
EINA_LIST_FREE(item->submenu.items, _item) elm_menu_item_del(_item);
|
||||
if (item->label) eina_stringshare_del(item->label);
|
||||
if (item->content) evas_object_del(item->content);
|
||||
if (item->submenu.hv) evas_object_del(item->submenu.hv);
|
||||
if (item->submenu.location) evas_object_del(item->submenu.location);
|
||||
|
||||
if (item->parent)
|
||||
item->parent->submenu.items = eina_list_remove(item->parent->submenu.items, item);
|
||||
else
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(WIDGET(item));
|
||||
wd->items = eina_list_remove(wd->items, item);
|
||||
}
|
||||
|
||||
elm_widget_item_del(item);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -185,15 +185,6 @@ EAPI Elm_Object_Item *elm_menu_item_separator_add(Evas_Object *obj,
|
|||
*/
|
||||
EAPI Eina_Bool elm_menu_item_is_separator(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief Deletes an item from the menu.
|
||||
*
|
||||
* @param it The item to delete.
|
||||
*
|
||||
* @see elm_menu_item_add()
|
||||
*/
|
||||
EAPI void elm_menu_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* @brief Returns a list of @p item's subitems.
|
||||
*
|
||||
|
|
|
@ -79,7 +79,11 @@ _del_hook(Evas_Object *obj)
|
|||
wd = elm_widget_data_get(obj);
|
||||
if (!wd) return;
|
||||
|
||||
EINA_LIST_FREE(wd->seg_items, it) _item_free(it);
|
||||
EINA_LIST_FREE(wd->seg_items, it)
|
||||
{
|
||||
_item_free(it);
|
||||
elm_widget_item_free(it);
|
||||
}
|
||||
|
||||
free(wd);
|
||||
}
|
||||
|
@ -180,12 +184,8 @@ _item_free(Elm_Segment_Item *it)
|
|||
if (wd->selected_item == it) wd->selected_item = NULL;
|
||||
if (wd->seg_items) wd->seg_items = eina_list_remove(wd->seg_items, it);
|
||||
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
|
||||
if (it->icon) evas_object_del(it->icon);
|
||||
if (it->label) eina_stringshare_del(it->label);
|
||||
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -503,6 +503,20 @@ _item_content_get_hook(const Elm_Object_Item *it, const char *part)
|
|||
return ((Elm_Segment_Item *) it)->icon;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Widget_Data *wd;
|
||||
Elm_Segment_Item *item = (Elm_Segment_Item *) it;
|
||||
|
||||
wd = elm_widget_item_data_get(item);
|
||||
if (!wd) return;
|
||||
|
||||
_item_free(item);
|
||||
_update_list(wd);
|
||||
}
|
||||
|
||||
static Elm_Segment_Item*
|
||||
_item_new(Evas_Object *obj, Evas_Object *icon, const char *label)
|
||||
{
|
||||
|
@ -515,6 +529,7 @@ _item_new(Evas_Object *obj, Evas_Object *icon, const char *label)
|
|||
it = elm_widget_item_new(obj, Elm_Segment_Item);
|
||||
if (!it) return NULL;
|
||||
elm_widget_item_data_set(it, wd);
|
||||
elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
|
||||
elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
|
||||
elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
|
||||
|
@ -640,15 +655,7 @@ elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon,
|
|||
EAPI void
|
||||
elm_segment_control_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
Widget_Data *wd;
|
||||
Elm_Segment_Item *item = (Elm_Segment_Item *) it;
|
||||
|
||||
wd = elm_widget_item_data_get(item);
|
||||
if (!wd) return;
|
||||
|
||||
_item_free(item);
|
||||
_update_list(wd);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -663,8 +670,7 @@ elm_segment_control_item_del_at(Evas_Object *obj, int idx)
|
|||
|
||||
it = _item_find(obj, idx);
|
||||
if (!it) return;
|
||||
_item_free(it);
|
||||
_update_list(wd);
|
||||
elm_object_item_del((Elm_Object_Item *) it);
|
||||
}
|
||||
|
||||
EAPI const char*
|
||||
|
|
|
@ -83,7 +83,7 @@ EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent);
|
|||
* elm_segment_control_item_insert_at() should be used instead.
|
||||
*
|
||||
* Items created with this function can be deleted with function
|
||||
* elm_segment_control_item_del() or elm_segment_control_item_del_at().
|
||||
* elm_object_item_del() or elm_segment_control_item_del_at().
|
||||
*
|
||||
* @note @p label set to @c NULL is different from empty string "".
|
||||
* If an item
|
||||
|
@ -102,7 +102,7 @@ EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent);
|
|||
* @endcode
|
||||
*
|
||||
* @see elm_segment_control_item_insert_at()
|
||||
* @see elm_segment_control_item_del()
|
||||
* @see elm_object_item_del()
|
||||
*
|
||||
* @ingroup SegmentControl
|
||||
*/
|
||||
|
@ -125,7 +125,7 @@ EAPI Elm_Object_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object
|
|||
* to segment control, just like elm_segment_control_item_add().
|
||||
*
|
||||
* Items created with this function can be deleted with function
|
||||
* elm_segment_control_item_del() or elm_segment_control_item_del_at().
|
||||
* elm_object_item_del() or elm_segment_control_item_del_at().
|
||||
*
|
||||
* @note @p label set to @c NULL is different from empty string "".
|
||||
* If an item
|
||||
|
@ -135,24 +135,12 @@ EAPI Elm_Object_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object
|
|||
*
|
||||
* @see elm_segment_control_item_add()
|
||||
* @see elm_segment_control_item_count_get()
|
||||
* @see elm_segment_control_item_del()
|
||||
* @see elm_object_item_del()
|
||||
*
|
||||
* @ingroup SegmentControl
|
||||
*/
|
||||
EAPI Elm_Object_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index);
|
||||
|
||||
/**
|
||||
* Remove a segment control item from its parent, deleting it.
|
||||
*
|
||||
* @param it The item to be removed.
|
||||
*
|
||||
* Items can be added with elm_segment_control_item_add() or
|
||||
* elm_segment_control_item_insert_at().
|
||||
*
|
||||
* @ingroup SegmentControl
|
||||
*/
|
||||
EAPI void elm_segment_control_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Remove a segment control item at given index from its parent,
|
||||
* deleting it.
|
||||
|
|
|
@ -348,6 +348,38 @@ _timer_cb(void *data)
|
|||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
|
||||
Elm_Slideshow_Item *item = (Elm_Slideshow_Item *) it;
|
||||
Widget_Data *wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
if (wd->previous == item) wd->previous = NULL;
|
||||
if (wd->current == item)
|
||||
{
|
||||
Eina_List *l = eina_list_data_find_list(wd->items, item);
|
||||
Eina_List *l2 = eina_list_next(l);
|
||||
wd->current = NULL;
|
||||
if (!l2)
|
||||
{
|
||||
l2 = eina_list_prev(l);
|
||||
if (l2)
|
||||
elm_slideshow_show(eina_list_data_get(l2));
|
||||
|
||||
}
|
||||
else
|
||||
elm_slideshow_show(eina_list_data_get(l2));
|
||||
}
|
||||
|
||||
wd->items = eina_list_remove_list(wd->items, item->l);
|
||||
wd->items_built = eina_list_remove_list(wd->items_built, item->l_built);
|
||||
|
||||
if ((VIEW(item)) && (item->itc->func.del))
|
||||
item->itc->func.del(elm_widget_item_data_get(item), VIEW(item));
|
||||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
elm_slideshow_add(Evas_Object *parent)
|
||||
{
|
||||
|
@ -409,7 +441,7 @@ elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, co
|
|||
if (!wd) return NULL;
|
||||
item = elm_widget_item_new(obj, Elm_Slideshow_Item);
|
||||
if (!item) return NULL;
|
||||
|
||||
elm_widget_item_del_pre_hook_set(item, _item_del_pre_hook);
|
||||
item->itc = itc;
|
||||
item->l = eina_list_append(item->l, item);
|
||||
elm_widget_item_data_set(item, data);
|
||||
|
@ -431,7 +463,7 @@ elm_slideshow_item_sorted_insert(Evas_Object *obj, const Elm_Slideshow_Item_Clas
|
|||
|
||||
item = elm_widget_item_new(obj, Elm_Slideshow_Item);
|
||||
if (!item) return NULL;
|
||||
|
||||
elm_widget_item_del_pre_hook_set(item, _item_del_pre_hook);
|
||||
item->itc = itc;
|
||||
item->l = eina_list_append(item->l, item);
|
||||
elm_widget_item_data_set(item, data);
|
||||
|
@ -648,49 +680,16 @@ elm_slideshow_clear(Evas_Object *obj)
|
|||
{
|
||||
if (item->itc->func.del)
|
||||
item->itc->func.del(elm_widget_item_data_get(item), VIEW(item));
|
||||
evas_object_del(VIEW(item));
|
||||
VIEW(item) = NULL;
|
||||
}
|
||||
|
||||
EINA_LIST_FREE(wd->items, item)
|
||||
{
|
||||
elm_widget_item_del(item);
|
||||
}
|
||||
elm_widget_item_free(item);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_slideshow_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
|
||||
Elm_Slideshow_Item *item = (Elm_Slideshow_Item *) it;
|
||||
Widget_Data *wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
if (wd->previous == item) wd->previous = NULL;
|
||||
if (wd->current == item)
|
||||
{
|
||||
Eina_List *l = eina_list_data_find_list(wd->items, item);
|
||||
Eina_List *l2 = eina_list_next(l);
|
||||
wd->current = NULL;
|
||||
if (!l2)
|
||||
{
|
||||
l2 = eina_list_prev(l);
|
||||
if (l2)
|
||||
elm_slideshow_show(eina_list_data_get(l2));
|
||||
|
||||
}
|
||||
else
|
||||
elm_slideshow_show(eina_list_data_get(l2));
|
||||
}
|
||||
|
||||
wd->items = eina_list_remove_list(wd->items, item->l);
|
||||
wd->items_built = eina_list_remove_list(wd->items_built, item->l_built);
|
||||
|
||||
if ((VIEW(item)) && (item->itc->func.del))
|
||||
item->itc->func.del(elm_widget_item_data_get(item), VIEW(item));
|
||||
if (VIEW(item))
|
||||
evas_object_del(VIEW(item));
|
||||
free(item);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI const Eina_List *
|
||||
|
|
|
@ -333,7 +333,7 @@ EAPI Eina_Bool elm_slideshow_loop_get(const Evas_Object *obj);
|
|||
* This removes (and deletes) all items in @p obj, leaving it
|
||||
* empty.
|
||||
*
|
||||
* @see elm_slideshow_item_del(), to remove just one item.
|
||||
* @see elm_object_item_del(), to remove just one item.
|
||||
*
|
||||
* @ingroup Slideshow
|
||||
*/
|
||||
|
@ -348,7 +348,7 @@ EAPI void elm_slideshow_clear(Evas_Object *obj);
|
|||
*
|
||||
* This list is @b not to be modified in any way and must not be
|
||||
* freed. Use the list members with functions like
|
||||
* elm_slideshow_item_del(), elm_slideshow_item_data_get().
|
||||
* elm_object_item_del(), elm_slideshow_item_data_get().
|
||||
*
|
||||
* @warning This list is only valid until @p obj object's internal
|
||||
* items list is changed. It should be fetched again with another
|
||||
|
@ -358,15 +358,6 @@ EAPI void elm_slideshow_clear(Evas_Object *obj);
|
|||
*/
|
||||
EAPI const Eina_List *elm_slideshow_items_get(const Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* Delete a given item from a slideshow widget.
|
||||
*
|
||||
* @param it The slideshow item
|
||||
*
|
||||
* @ingroup Slideshow
|
||||
*/
|
||||
EAPI void elm_slideshow_item_del(Elm_Object_Item *it);
|
||||
|
||||
/**
|
||||
* Returns the currently displayed item, in a given slideshow widget
|
||||
*
|
||||
|
|
|
@ -244,7 +244,6 @@ _item_del(Elm_Toolbar_Item *it)
|
|||
{
|
||||
Elm_Toolbar_Item_State *it_state;
|
||||
_item_unselect(it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
EINA_LIST_FREE(it->states, it_state)
|
||||
{
|
||||
if (it->icon == it_state->icon)
|
||||
|
@ -259,7 +258,6 @@ _item_del(Elm_Toolbar_Item *it)
|
|||
if (it->icon) evas_object_del(it->icon);
|
||||
//TODO: See if checking for wd->menu_parent is necessary before deleting menu
|
||||
if (it->o_menu) evas_object_del(it->o_menu);
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -274,10 +272,14 @@ _del_pre_hook(Evas_Object *obj)
|
|||
{
|
||||
next = ELM_TOOLBAR_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
|
||||
_item_del(it);
|
||||
elm_widget_item_free(it);
|
||||
it = next;
|
||||
}
|
||||
if (wd->more_item)
|
||||
{
|
||||
_item_del(wd->more_item);
|
||||
elm_widget_item_free(wd->more_item);
|
||||
}
|
||||
if (wd->long_timer)
|
||||
{
|
||||
ecore_timer_del(wd->long_timer);
|
||||
|
@ -762,6 +764,28 @@ _access_state_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Widget_
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_del_pre_hook(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
|
||||
Widget_Data *wd;
|
||||
Evas_Object *obj2;
|
||||
Elm_Toolbar_Item *item, *next;
|
||||
item = (Elm_Toolbar_Item *) it;
|
||||
|
||||
wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
obj2 = WIDGET(item);
|
||||
next = ELM_TOOLBAR_ITEM_FROM_INLIST(EINA_INLIST_GET(item)->next);
|
||||
wd->items = eina_inlist_remove(wd->items, EINA_INLIST_GET(item));
|
||||
wd->item_count--;
|
||||
if (!next) next = ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items);
|
||||
if (wd->always_select && item->selected && next) _item_select(next);
|
||||
_item_del(item);
|
||||
_theme_hook(obj2);
|
||||
}
|
||||
|
||||
static Elm_Toolbar_Item *
|
||||
_item_new(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data)
|
||||
{
|
||||
|
@ -780,6 +804,7 @@ _item_new(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb f
|
|||
return NULL;
|
||||
}
|
||||
|
||||
elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
|
||||
elm_widget_item_disable_hook_set(it, _item_disable_hook);
|
||||
elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
|
||||
elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
|
||||
|
@ -1450,23 +1475,7 @@ elm_toolbar_item_icon_file_set(Elm_Object_Item *it, const char *file, const char
|
|||
EAPI void
|
||||
elm_toolbar_item_del(Elm_Object_Item *it)
|
||||
{
|
||||
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
|
||||
|
||||
Widget_Data *wd;
|
||||
Evas_Object *obj2;
|
||||
Elm_Toolbar_Item *item, *next;
|
||||
item = (Elm_Toolbar_Item *) it;
|
||||
|
||||
wd = elm_widget_data_get(WIDGET(item));
|
||||
if (!wd) return;
|
||||
obj2 = WIDGET(item);
|
||||
next = ELM_TOOLBAR_ITEM_FROM_INLIST(EINA_INLIST_GET(item)->next);
|
||||
wd->items = eina_inlist_remove(wd->items, EINA_INLIST_GET(item));
|
||||
wd->item_count--;
|
||||
if (!next) next = ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items);
|
||||
if (wd->always_select && item->selected && next) _item_select(next);
|
||||
_item_del(item);
|
||||
_theme_hook(obj2);
|
||||
elm_object_item_del(it);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -1524,6 +1533,7 @@ elm_toolbar_shrink_mode_set(Evas_Object *obj, Elm_Toolbar_Shrink_Mode shrink_mod
|
|||
if (wd->more_item)
|
||||
{
|
||||
_item_del(wd->more_item);
|
||||
elm_widget_item_free(wd->more_item);
|
||||
wd->more_item = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -216,7 +216,7 @@ EAPI Eina_Bool elm_toolbar_no_select_mode_get(const Evas_Obje
|
|||
* be set as @b last item.
|
||||
*
|
||||
* Items created with this method can be deleted with
|
||||
* elm_toolbar_item_del().
|
||||
* elm_object_item_del().
|
||||
*
|
||||
* Associated @p data can be properly freed when item is deleted if a
|
||||
* callback function is set with elm_object_item_del_cb_set().
|
||||
|
@ -231,7 +231,7 @@ EAPI Eina_Bool elm_toolbar_no_select_mode_get(const Evas_Obje
|
|||
* If an absolute path is provided it will load it direct from a file.
|
||||
*
|
||||
* @see elm_toolbar_item_icon_set()
|
||||
* @see elm_toolbar_item_del()
|
||||
* @see elm_object_item_del()
|
||||
*
|
||||
* @ingroup Toolbar
|
||||
*/
|
||||
|
@ -251,7 +251,7 @@ EAPI Elm_Object_Item *elm_toolbar_item_append(Evas_Object *obj, cons
|
|||
* be set as @b first item.
|
||||
*
|
||||
* Items created with this method can be deleted with
|
||||
* elm_toolbar_item_del().
|
||||
* elm_object_item_del().
|
||||
*
|
||||
* Associated @p data can be properly freed when item is deleted if a
|
||||
* callback function is set with elm_object_item_del_cb_set().
|
||||
|
@ -266,7 +266,7 @@ EAPI Elm_Object_Item *elm_toolbar_item_append(Evas_Object *obj, cons
|
|||
* If an absolute path is provided it will load it direct from a file.
|
||||
*
|
||||
* @see elm_toolbar_item_icon_set()
|
||||
* @see elm_toolbar_item_del()
|
||||
* @see elm_object_item_del()
|
||||
*
|
||||
* @ingroup Toolbar
|
||||
*/
|
||||
|
@ -287,7 +287,7 @@ EAPI Elm_Object_Item *elm_toolbar_item_prepend(Evas_Object *obj, con
|
|||
* this toolbar will be just before item @p before.
|
||||
*
|
||||
* Items created with this method can be deleted with
|
||||
* elm_toolbar_item_del().
|
||||
* elm_object_item_del().
|
||||
*
|
||||
* Associated @p data can be properly freed when item is deleted if a
|
||||
* callback function is set with elm_object_item_del_cb_set().
|
||||
|
@ -302,7 +302,7 @@ EAPI Elm_Object_Item *elm_toolbar_item_prepend(Evas_Object *obj, con
|
|||
* If an absolute path is provided it will load it direct from a file.
|
||||
*
|
||||
* @see elm_toolbar_item_icon_set()
|
||||
* @see elm_toolbar_item_del()
|
||||
* @see elm_object_item_del()
|
||||
*
|
||||
* @ingroup Toolbar
|
||||
*/
|
||||
|
@ -323,7 +323,7 @@ EAPI Elm_Object_Item *elm_toolbar_item_insert_before(Evas_Object *ob
|
|||
* this toolbar will be just after item @p after.
|
||||
*
|
||||
* Items created with this method can be deleted with
|
||||
* elm_toolbar_item_del().
|
||||
* elm_object_item_del().
|
||||
*
|
||||
* Associated @p data can be properly freed when item is deleted if a
|
||||
* callback function is set with elm_object_item_del_cb_set().
|
||||
|
@ -338,7 +338,7 @@ EAPI Elm_Object_Item *elm_toolbar_item_insert_before(Evas_Object *ob
|
|||
* If an absolute path is provided it will load it direct from a file.
|
||||
*
|
||||
* @see elm_toolbar_item_icon_set()
|
||||
* @see elm_toolbar_item_del()
|
||||
* @see elm_object_item_del()
|
||||
*
|
||||
* @ingroup Toolbar
|
||||
*/
|
||||
|
@ -586,18 +586,6 @@ EAPI Eina_Bool elm_toolbar_item_icon_memfile_set(Elm_Object_I
|
|||
*/
|
||||
EAPI Eina_Bool elm_toolbar_item_icon_file_set(Elm_Object_Item *it, const char *file, const char *key);
|
||||
|
||||
/**
|
||||
* Delete them item from the toolbar.
|
||||
*
|
||||
* @param it The item of toolbar to be deleted.
|
||||
*
|
||||
* @see elm_toolbar_item_append()
|
||||
*
|
||||
* @ingroup Toolbar
|
||||
*/
|
||||
EAPI void elm_toolbar_item_del(Elm_Object_Item *it);
|
||||
|
||||
|
||||
/**
|
||||
* Set or unset item as a separator.
|
||||
*
|
||||
|
|
|
@ -2803,6 +2803,33 @@ _elm_widget_item_new(Evas_Object *widget,
|
|||
return item;
|
||||
}
|
||||
|
||||
void
|
||||
_elm_widget_item_free(Elm_Widget_Item *item)
|
||||
{
|
||||
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
|
||||
|
||||
if (item->del_func)
|
||||
item->del_func((void *)item->data, item->widget, item);
|
||||
|
||||
if (item->view)
|
||||
evas_object_del(item->view);
|
||||
|
||||
if (item->access)
|
||||
{
|
||||
_elm_access_clear(item->access);
|
||||
free(item->access);
|
||||
item->access = NULL;
|
||||
}
|
||||
if (item->access_info)
|
||||
{
|
||||
eina_stringshare_del(item->access_info);
|
||||
item->access_info = NULL;
|
||||
}
|
||||
|
||||
EINA_MAGIC_SET(item, EINA_MAGIC_NONE);
|
||||
free(item);
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
|
@ -2826,29 +2853,11 @@ _elm_widget_item_del(Elm_Widget_Item *item)
|
|||
{
|
||||
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
|
||||
|
||||
if (item->del_func)
|
||||
item->del_func((void *)item->data, item->widget, item);
|
||||
|
||||
//Widget delete callback
|
||||
if (item->del_pre_func)
|
||||
item->del_pre_func((Elm_Object_Item *) item);
|
||||
|
||||
if (item->view)
|
||||
evas_object_del(item->view);
|
||||
|
||||
if (item->access)
|
||||
{
|
||||
_elm_access_clear(item->access);
|
||||
free(item->access);
|
||||
item->access = NULL;
|
||||
}
|
||||
if (item->access_info)
|
||||
{
|
||||
eina_stringshare_del(item->access_info);
|
||||
item->access_info = NULL;
|
||||
}
|
||||
|
||||
EINA_MAGIC_SET(item, EINA_MAGIC_NONE);
|
||||
free(item);
|
||||
_elm_widget_item_free(item);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -264,8 +264,9 @@ struct _Elm_Widget_Item
|
|||
Evas_Object *view;
|
||||
/**< item specific data. used for del callback */
|
||||
const void *data;
|
||||
/**< user delete callback function */
|
||||
Evas_Smart_Cb del_func;
|
||||
/**< don't expose this callback call */
|
||||
/**< widget delete callback function. don't expose this callback call */
|
||||
Elm_Widget_Del_Pre_Cb del_pre_func;
|
||||
|
||||
Elm_Widget_Content_Set_Cb content_set_func;
|
||||
|
@ -441,6 +442,7 @@ EAPI Evas_Object *elm_widget_content_part_unset(Evas_Object *obj, const char
|
|||
EAPI void elm_widget_access_info_set(Evas_Object *obj, const char *txt);
|
||||
EAPI const char *elm_widget_access_info_get(Evas_Object *obj);
|
||||
EAPI Elm_Widget_Item *_elm_widget_item_new(Evas_Object *parent, size_t alloc_size);
|
||||
EAPI void _elm_widget_item_free(Elm_Widget_Item *item);
|
||||
EAPI void _elm_widget_item_del(Elm_Widget_Item *item);
|
||||
EAPI void _elm_widget_item_pre_notify_del(Elm_Widget_Item *item);
|
||||
EAPI void _elm_widget_item_del_cb_set(Elm_Widget_Item *item, Evas_Smart_Cb del_cb);
|
||||
|
@ -491,6 +493,14 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out
|
|||
*/
|
||||
#define elm_widget_item_new(parent, type) \
|
||||
(type *)_elm_widget_item_new((parent), sizeof(type))
|
||||
/**
|
||||
* Convenience macro to free widget item, doing casts for you.
|
||||
* @see _elm_widget_item_free()
|
||||
* @param item a valid item.
|
||||
*/
|
||||
#define elm_widget_item_free(item) \
|
||||
_elm_widget_item_free((Elm_Widget_Item *)item)
|
||||
|
||||
/**
|
||||
* Convenience macro to delete widget item, doing casts for you.
|
||||
* @see _elm_widget_item_del()
|
||||
|
|
Loading…
Reference in New Issue