From 570cfc1de972a981a6e81269a8ade99df8a58f8a Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Wed, 25 Jul 2012 17:38:48 +0000 Subject: [PATCH] naviframe: back button text defaults to previous page title. SVN revision: 74401 --- legacy/elementary/src/lib/elc_naviframe.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/legacy/elementary/src/lib/elc_naviframe.c b/legacy/elementary/src/lib/elc_naviframe.c index 0714683a25..5f6355ccd0 100644 --- a/legacy/elementary/src/lib/elc_naviframe.c +++ b/legacy/elementary/src/lib/elc_naviframe.c @@ -30,6 +30,7 @@ struct _Elm_Naviframe_Item Evas_Object *title_next_btn; Evas_Object *title_icon; const char *style; + const char *title_label; Evas_Coord minw; Evas_Coord minh; @@ -145,6 +146,7 @@ _item_free(Elm_Naviframe_Item *it) ELM_NAVIFRAME_DATA_GET(WIDGET(it), sd); eina_stringshare_del(it->style); + eina_stringshare_del(it->title_label); if (it->title_prev_btn) evas_object_del(it->title_prev_btn); @@ -260,7 +262,10 @@ _item_text_set_hook(Elm_Object_Item *it, char buf[1024]; if (!part || !strcmp(part, "default")) - snprintf(buf, sizeof(buf), "elm.text.title"); + { + eina_stringshare_replace(&nit->title_label, label); + snprintf(buf, sizeof(buf), "elm.text.title"); + } else if (!strcmp("subtitle", part)) snprintf(buf, sizeof(buf), "elm.text.subtitle"); else @@ -612,7 +617,7 @@ _on_item_back_btn_clicked(void *data, } static Evas_Object * -_back_btn_new(Evas_Object *obj) +_back_btn_new(Evas_Object *obj, const char *title_label) { Evas_Object *btn, *ico; char buf[1024]; @@ -625,7 +630,10 @@ _back_btn_new(Evas_Object *obj) snprintf (buf, sizeof(buf), "naviframe/back_btn/%s", elm_widget_style_get(obj)); elm_object_style_set(btn, buf); - elm_object_domain_translatable_text_set(btn, PACKAGE, N_("Back")); + if (title_label) + elm_layout_text_set(btn, NULL, title_label); + else + elm_object_domain_translatable_text_set(btn, PACKAGE, N_("Back")); ico = elm_icon_add(btn); elm_icon_standard_set(ico, "arrow_left"); @@ -848,9 +856,12 @@ _item_new(Evas_Object *obj, _item_text_set_hook((Elm_Object_Item *)it, "elm.text.title", title_label); //title buttons - if ((!prev_btn) && sd->auto_pushed && eina_inlist_count(sd->stack)) + if ((!prev_btn) && sd->auto_pushed && sd->stack) { - prev_btn = _back_btn_new(obj); + Elm_Naviframe_Item *previt = EINA_INLIST_CONTAINER_GET + (sd->stack->last, Elm_Naviframe_Item); + const char *prev_title = previt->title_label; + prev_btn = _back_btn_new(obj, prev_title); _item_title_prev_btn_set(it, prev_btn); } else