From e04fc5723e86c7d8008837577d8023f4bfa9ce1d Mon Sep 17 00:00:00 2001 From: Jaehyun Cho Date: Fri, 18 Oct 2013 19:53:16 +0900 Subject: [PATCH] [naviframe] Fix not to re-load previous item view's theme Summary: Calling elm_widget_sub_object_add after calling elm_widget_sub_object_del may cause theme loading even though the sub object's theme is the same as the parent object's theme. This commit prevents the previous item view's theme re-loading. Reviewers: Hermet, seoz Reviewed By: seoz CC: seoz Differential Revision: https://phab.enlightenment.org/D267 --- src/lib/elc_naviframe.c | 41 +++++++++++------------------------------ 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index 6d026ac..3a72906 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -37,24 +37,11 @@ static const char SIG_CLICKED[] = "clicked"; static void _on_item_back_btn_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__); static void -_resize_object_reset(Evas_Object *obj, Elm_Naviframe_Item *it, - Elm_Naviframe_Item *prev_it, Eina_Bool dummy) +_resize_object_reset(Evas_Object *obj, Elm_Naviframe_Item *it) { - ELM_NAVIFRAME_DATA_GET(obj, sd); - - //Recover previous smart members. - if (prev_it) - { - elm_widget_resize_object_set(obj, NULL, EINA_TRUE); - elm_widget_sub_object_add(obj, VIEW(prev_it)); - evas_object_smart_member_add(VIEW(prev_it), obj); - } - else if (dummy) - evas_object_smart_member_add(sd->dummy_edje, obj); - if (it) { - elm_widget_resize_object_set(obj, VIEW(it), EINA_TRUE); + elm_widget_resize_object_set(obj, VIEW(it), EINA_FALSE); evas_object_raise(VIEW(it)); } } @@ -516,8 +503,7 @@ _item_del_pre_hook(Elm_Object_Item *it) if (sd->freeze_events) evas_object_freeze_events_set(VIEW(prev_it), EINA_FALSE); - _resize_object_reset(WIDGET(prev_it), prev_it, NULL, - EINA_FALSE); + _resize_object_reset(WIDGET(prev_it), prev_it); evas_object_show(VIEW(prev_it)); _prev_page_focus_recover(prev_it); @@ -526,9 +512,6 @@ _item_del_pre_hook(Elm_Object_Item *it) } end: - if (!sd->stack && !sd->on_deletion) - _resize_object_reset(WIDGET(it), NULL, NULL, EINA_TRUE); - _item_free(nit); return EINA_TRUE; @@ -1178,6 +1161,9 @@ _item_new(Evas_Object *obj, VIEW(it) = elm_layout_add(obj); evas_object_smart_member_add(VIEW(it), obj); + if (!elm_widget_sub_object_add(obj, VIEW(it))) + ERR("could not add %p as sub object of %p", VIEW(it), obj); + evas_object_event_callback_add (VIEW(it), EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hints_changed, obj); @@ -1512,7 +1498,7 @@ _item_push(Eo *obj, void *_pd, va_list *list) evas_object_show(VIEW(it)); if (prev_it) elm_widget_focused_object_clear(VIEW(prev_it)); - _resize_object_reset(obj, it, prev_it, !prev_it); + _resize_object_reset(obj, it); if (prev_it) { if (sd->freeze_events) @@ -1642,8 +1628,7 @@ _item_insert_after(Eo *obj, void *_pd, va_list *list) if (top_inserted) { elm_widget_focused_object_clear(VIEW(after)); - _resize_object_reset(obj, it, (Elm_Naviframe_Item *)after, - EINA_FALSE); + _resize_object_reset(obj, it); evas_object_show(VIEW(it)); evas_object_hide(VIEW(after)); if (elm_object_focus_allow_get(VIEW(it))) @@ -1716,7 +1701,7 @@ _item_pop(Eo *obj, void *_pd, va_list *list) evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE); } - _resize_object_reset(obj, prev_it, NULL, EINA_FALSE); + _resize_object_reset(obj, prev_it); /* these 2 signals MUST take place simultaneously */ elm_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm"); @@ -1731,11 +1716,7 @@ _item_pop(Eo *obj, void *_pd, va_list *list) sd->popping = eina_list_append(sd->popping, it); } else - { - if (!sd->stack) - _resize_object_reset(obj, NULL, NULL, EINA_TRUE); - elm_widget_item_del(it); - } + elm_widget_item_del(it); *ret = content; } @@ -1800,7 +1781,7 @@ elm_naviframe_item_promote(Elm_Object_Item *it) (sd->stack->last->prev, Elm_Naviframe_Item); elm_widget_focused_object_clear(VIEW(nit)); - _resize_object_reset(WIDGET(it), nit, prev_it, !prev_it); + _resize_object_reset(WIDGET(it), nit); if (sd->freeze_events) { -- 2.7.4