sanghyeonlee pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=1094fb77a0ee23cbe1e8b15783e406a8d93b7fd4
commit 1094fb77a0ee23cbe1e8b15783e406a8d93b7fd4 Author: SangHyeon Lee <[email protected]> Date: Mon Oct 12 14:41:44 2015 +0900 gengrid : add all_contents_unset API in gengrid for reusing contents. Summary: Add elm_gengrid_item_all_contents_unset API for reusing contents in application side. User can unset all contents or re-use their contents for increase scrolling performance. genlist already support this API. @feature Test Plan: Need to add test in elementary_test. Reviewers: raster, singh.amitesh, cedric Subscribers: woohyun, Hermet, seoz Differential Revision: https://phab.enlightenment.org/D3066 --- src/lib/elm_gengrid.c | 16 ++++++++++++++++ src/lib/elm_gengrid_item.eo | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 01c72cc..c3dead7 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -4585,6 +4585,22 @@ elm_gengrid_item_object_get(const Elm_Object_Item *eo_it) } 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) + { + elm_widget_sub_object_del(WIDGET(it), content); + edje_object_part_unswallow(VIEW(it), content); + evas_object_hide(content); + if (l) *l = eina_list_append(*l, content); + } +} + +EOLIAN static void _elm_gengrid_item_update(Eo *eo_item EINA_UNUSED, Elm_Gen_Item *it) { ELM_GENGRID_ITEM_CHECK_OR_RETURN(it); diff --git a/src/lib/elm_gengrid_item.eo b/src/lib/elm_gengrid_item.eo index 95a079c..7da7ff5 100644 --- a/src/lib/elm_gengrid_item.eo +++ b/src/lib/elm_gengrid_item.eo @@ -154,6 +154,18 @@ class Elm.Gengrid_Item(Elm.Widget_Item) @in type: Elm_Gengrid_Item_Scrollto_Type; [[Where to position the item in the viewport.]] } } + 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.]] + } + } update { [[Update the contents of a given gengrid item --
