gengrid: add all contents unset API for content unset and reusing

Add elm_gengrid_item_all_contents_unset API for support content reuse
and unset. User can get back content objects in unrealized smart callback in item.
see elm_genlist_item_all_contents_unset also.

@feature
This commit is contained in:
SangHyeon Lee 2016-02-16 15:28:45 +09:00
parent d90f2119de
commit 55e8c3b743
2 changed files with 30 additions and 0 deletions

View File

@ -984,6 +984,24 @@ _view_clear(Evas_Object *view, Eina_List **texts, Eina_List **contents)
evas_object_del(c);
}
EOLIAN static void
_elm_gengrid_item_all_contents_unset(Eo *eo_item EINA_UNUSED, Elm_Gen_Item *it, Eina_List **l)
{
Evas_Object *content;
ELM_GENGRID_ITEM_CHECK_OR_RETURN(it);
EINA_LIST_FREE (it->contents, content)
{
evas_object_smart_member_del(content);
// edje can be reused by item caching,
// content should be un-swallowed from edje
edje_object_part_unswallow(VIEW(it), content);
evas_object_hide(content);
if (l) *l = eina_list_append(*l, content);
}
}
static void
_elm_gengrid_item_unrealize(Elm_Gen_Item *it,
Eina_Bool calc)

View File

@ -191,6 +191,18 @@ class Elm.Gengrid_Item(Elm.Widget_Item)
@in itc: const (Elm.Gengrid.Item.Class) *; [[The gengrid item class describing the function pointers and the item style.]]
}
}
all_contents_unset{
[[Unset all contents fetched by the item class
This instructs gengrid to release references to contents in the item,
meaning that they will no longer be managed by gengrid and are
floating "orphans" that can be re-used elsewhere if the user wants
to.]]
params {
@out l: own(list<own(Evas.Object *)> *); [[The contents list to return.]]
}
}
}
implements {
Eo.Base.constructor;