From 2b68b6420fd3a4b3205cecc36e601ae89c1c71c6 Mon Sep 17 00:00:00 2001 From: hermet Date: Mon, 19 Sep 2011 05:23:35 +0000 Subject: [PATCH] elementary/naviframe - added one convenient API for users. pop the items which are in the stack between the top and the upper one of the given item git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@63469 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/Elementary.h.in | 1 + src/lib/elc_naviframe.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 802614b..0d114df 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -26662,6 +26662,7 @@ extern "C" { EAPI Evas_Object *elm_naviframe_add(Evas_Object *parent) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) EINA_ARG_NONNULL(1, 5); EAPI Evas_Object *elm_naviframe_item_pop(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_naviframe_item_pop_to(Elm_Object_Item *it) EINA_ARG_NONNULL(1); EAPI void elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_naviframe_top_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index fb2a666..d4d7dc4 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -842,6 +842,29 @@ elm_naviframe_item_pop(Evas_Object *obj) } EAPI void +elm_naviframe_item_pop_to(Elm_Object_Item *it) +{ + ELM_OBJ_ITEM_CHECK_OR_RETURN(it); + Elm_Naviframe_Item *navi_it = ELM_CAST(it); + Widget_Data *wd = elm_widget_data_get(navi_it->base.widget); + Eina_List *l, *prev_l; + + if (it == elm_naviframe_top_item_get(navi_it->base.widget)) return; + + l = eina_list_last(wd->stack)->prev; + + while(l) + { + if (l->data == it) break; + prev_l = l->prev; + _item_del(l->data); + wd->stack = eina_list_remove(wd->stack, l); + l = prev_l; + } + elm_naviframe_item_pop(navi_it->base.widget); +} + +EAPI void elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve) { ELM_CHECK_WIDTYPE(obj, widtype); -- 2.7.4