From 12269ae7112e65779a8ef2e2c493322cd6ed7fb3 Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Tue, 22 Jan 2013 05:28:31 +0000 Subject: [PATCH] elementary/naviframe - Apply disply mode to all views of a naviframe if the display mode of th e views are changed. Sometimes views are couldn't be recoverved to a previou s status if they are stacked into more depth. SVN revision: 83055 --- legacy/elementary/ChangeLog | 4 ++ legacy/elementary/NEWS | 1 + legacy/elementary/src/lib/elc_naviframe.c | 41 ++++++++++--------- .../elementary/src/lib/elm_widget_naviframe.h | 2 +- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/legacy/elementary/ChangeLog b/legacy/elementary/ChangeLog index 05f29c6253..081046a00f 100644 --- a/legacy/elementary/ChangeLog +++ b/legacy/elementary/ChangeLog @@ -936,3 +936,7 @@ 2013-01-19 WooHyun Jung * When string in entry is changed, access to sd should be forbidden after smart_callback_call is called. + +2013-01-22 ChunEon Park (Hermet) + + * apply display mode to all views of a naviframe if the display mode of the views are changed. diff --git a/legacy/elementary/NEWS b/legacy/elementary/NEWS index 116125b4d9..15876507a2 100644 --- a/legacy/elementary/NEWS +++ b/legacy/elementary/NEWS @@ -128,6 +128,7 @@ Fixes: * Fix thumb theme hook. * when parent of ctxpopup is resized, ctxpopup calls dismissed signal. * Fix memory leak of the ctxpopup and callback function to be ctxpopup obj is delivered to. + * Apply disply mode to all views of a naviframe if the display mode of the views are changed. Sometimes views are couldn't be recoverved to a previous status if they are stacked into more depth. Removals: diff --git a/legacy/elementary/src/lib/elc_naviframe.c b/legacy/elementary/src/lib/elc_naviframe.c index 1194ccc47a..82d9333328 100644 --- a/legacy/elementary/src/lib/elc_naviframe.c +++ b/legacy/elementary/src/lib/elc_naviframe.c @@ -438,9 +438,6 @@ _item_del_pre_hook(Elm_Object_Item *it) nit = (Elm_Naviframe_Item *)it; ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd); - if (it == sd->compress_it) - sd->compress_it = NULL; - if (nit->animator) ecore_animator_del(nit->animator); top = (it == elm_naviframe_top_item_get(WIDGET(nit))); @@ -1062,6 +1059,22 @@ _on_item_size_hints_changed(void *data, elm_layout_sizing_eval(data); } +static void +_item_dispmode_set(Elm_Naviframe_Item *it, Evas_Display_Mode dispmode) +{ + if (it->dispmode == dispmode) return; + switch (dispmode) + { + case EVAS_DISPLAY_MODE_COMPRESS: + edje_object_signal_emit(VIEW(it), "display,mode,compress", ""); + break; + default: + edje_object_signal_emit(VIEW(it), "display,mode,default", ""); + break; + } + it->dispmode = dispmode; +} + static Elm_Naviframe_Item * _item_new(Evas_Object *obj, const Elm_Naviframe_Item *prev_it, @@ -1138,6 +1151,8 @@ _item_new(Evas_Object *obj, } _item_content_set(it, content); + _item_dispmode_set(it, sd->dispmode); + it->title_visible = EINA_TRUE; return it; @@ -1147,33 +1162,21 @@ static void _on_obj_size_hints_changed(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) { - Elm_Object_Item *it; + Elm_Naviframe_Item *it; Evas_Display_Mode dispmode; ELM_NAVIFRAME_DATA_GET(obj, sd); - it = elm_naviframe_top_item_get(obj); - if (!it) return; - dispmode = evas_object_size_hint_display_mode_get(obj); if (sd->dispmode == dispmode) return; sd->dispmode = dispmode; - switch (dispmode) - { - case EVAS_DISPLAY_MODE_COMPRESS: - elm_object_signal_emit(VIEW(it), "display,mode,compress", ""); - sd->compress_it = it; - break; - default: - if (sd->compress_it) - elm_object_signal_emit(VIEW(sd->compress_it), "display,mode,default", - ""); - break; - } + EINA_INLIST_FOREACH(sd->stack, it) + _item_dispmode_set(it, dispmode); } + static void _elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list) { diff --git a/legacy/elementary/src/lib/elm_widget_naviframe.h b/legacy/elementary/src/lib/elm_widget_naviframe.h index c41d6a9440..6651725fd9 100644 --- a/legacy/elementary/src/lib/elm_widget_naviframe.h +++ b/legacy/elementary/src/lib/elm_widget_naviframe.h @@ -24,7 +24,6 @@ struct _Elm_Naviframe_Smart_Data Eina_List *popping; Evas_Object *dummy_edje; Evas_Display_Mode dispmode; - Elm_Object_Item *compress_it; Eina_Bool preserve : 1; Eina_Bool on_deletion : 1; @@ -45,6 +44,7 @@ struct _Elm_Naviframe_Item Evas_Object *title_next_btn; Evas_Object *title_icon; Ecore_Animator *animator; + Evas_Display_Mode dispmode; const char *style; const char *title_label; const char *subtitle_label;