bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=005c39b39caf6739ae71ddd105a772c4347c555f
commit 005c39b39caf6739ae71ddd105a772c4347c555f Author: Marcel Hollerbach <[email protected]> Date: Fri Feb 22 18:52:48 2019 +0100 efl_ui_stack: refactor code there has been a lot of duplications, they are removed now. The 5 new APIs are there to either show[1] or hide[2] content without animations, show[4] or hide[5] content with animations. The last new function[3] is there to announce the events after content has been removed. 1: _show_content_without_anim 2: _hide_content_without_anim 3: _announce_hiding 4:_show_content_with_anim 5:_hide_content_with_anim Reviewed-by: Mike Blumenkrantz <[email protected]> Differential Revision: https://phab.enlightenment.org/D8006 --- src/lib/elementary/efl_ui_stack.c | 552 +++++++++++--------------------------- 1 file changed, 152 insertions(+), 400 deletions(-) diff --git a/src/lib/elementary/efl_ui_stack.c b/src/lib/elementary/efl_ui_stack.c index 921c4ac336..b2138764c4 100644 --- a/src/lib/elementary/efl_ui_stack.c +++ b/src/lib/elementary/efl_ui_stack.c @@ -14,28 +14,89 @@ static Efl_Canvas_Animation *show_anim = NULL; static Efl_Canvas_Animation *hide_anim = NULL; static void -_content_del_cb(void *data, const Efl_Event *event EINA_UNUSED) +_announce_hiding(Efl_Ui_Stack *obj, Evas_Object *content) { - Content_Data *cd = data; - - //Popped content has already called deactivated event and unloaded event. - if (cd->popped_hidden) return; - //Deactivated Event Efl_Ui_Stack_Event_Deactivated deactivated_info; - deactivated_info.content = cd->content; - efl_event_callback_call(cd->stack, + deactivated_info.content = content; + efl_event_callback_call(obj, EFL_UI_STACK_EVENT_DEACTIVATED, &deactivated_info); //Unloaded Event Efl_Ui_Stack_Event_Unloaded unloaded_info; - unloaded_info.content = cd->content; - efl_event_callback_call(cd->stack, + unloaded_info.content = content; + efl_event_callback_call(obj, EFL_UI_STACK_EVENT_UNLOADED, &unloaded_info); } +static void +_show_content_without_anim(Efl_Ui_Stack *obj, Evas_Object *content) +{ + //Loaded Event + Efl_Ui_Stack_Event_Loaded loaded_info; + loaded_info.content = content; + efl_event_callback_call(obj, EFL_UI_STACK_EVENT_LOADED, + &loaded_info); + + Efl_Canvas_Animation *orig_show_anim = + efl_canvas_object_event_animation_get(content, + EFL_GFX_ENTITY_EVENT_SHOW); + + if (orig_show_anim) + efl_canvas_object_event_animation_set(content, + EFL_GFX_ENTITY_EVENT_SHOW, + NULL); + + evas_object_raise(content); + /* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set() + * internally. + * Therefore, efl_ui_widget_resize_object_set() is called after + * setting animation and efl_gfx_entity_visible_set() is not called. */ + efl_ui_widget_resize_object_set(obj, content); + + if (orig_show_anim) + efl_canvas_object_event_animation_set(content, + EFL_GFX_ENTITY_EVENT_SHOW, + orig_show_anim); + //Activated Event + Efl_Ui_Stack_Event_Activated activated_info; + activated_info.content = content; + efl_event_callback_call(obj, EFL_UI_STACK_EVENT_ACTIVATED, + &activated_info); +} + +static void +_hide_content_without_anim(Efl_Ui_Stack *obj EINA_UNUSED, Evas_Object *content) +{ + Efl_Canvas_Animation *orig_hide_anim = + efl_canvas_object_event_animation_get(content, + EFL_GFX_ENTITY_EVENT_HIDE); + + if (orig_hide_anim) + efl_canvas_object_event_animation_set(content, + EFL_GFX_ENTITY_EVENT_HIDE, NULL); + + efl_gfx_entity_visible_set(content, EINA_FALSE); + + if (orig_hide_anim) + efl_canvas_object_event_animation_set(content, + EFL_GFX_ENTITY_EVENT_HIDE, + orig_hide_anim); +} + +static void +_content_del_cb(void *data, const Efl_Event *event EINA_UNUSED) +{ + Content_Data *cd = data; + + //Popped content has already called deactivated event and unloaded event. + if (cd->popped_hidden) return; + + _announce_hiding(NULL, cd->content); +} + static Content_Data * _content_data_new(Eo *obj, Eo *content) { @@ -102,19 +163,7 @@ _anim_ended_cb(void *data, const Efl_Event *event) } else { - //Deactivated Event - Efl_Ui_Stack_Event_Deactivated deactivated_info; - deactivated_info.content = event->object; - efl_event_callback_call(td->cd->stack, - EFL_UI_STACK_EVENT_DEACTIVATED, - &deactivated_info); - - //Unloaded Event - Efl_Ui_Stack_Event_Unloaded unloaded_info; - unloaded_info.content = event->object; - efl_event_callback_call(td->cd->stack, - EFL_UI_STACK_EVENT_UNLOADED, - &unloaded_info); + _announce_hiding(NULL, event->object); } efl_event_callback_del(event->object, EFL_CANVAS_OBJECT_EVENT_ANIM_ENDED, @@ -122,6 +171,66 @@ _anim_ended_cb(void *data, const Efl_Event *event) free(data); } +static void +_show_content_with_anim(Efl_Ui_Stack *obj, Content_Data *cd) +{ + Efl_Canvas_Animation *orig_show_anim = + efl_canvas_object_event_animation_get(cd->content, + EFL_GFX_ENTITY_EVENT_SHOW); + + //Show with animation + if (!orig_show_anim) + efl_canvas_object_event_animation_set(cd->content, + EFL_GFX_ENTITY_EVENT_SHOW, + show_anim); + + Transit_Data *td = calloc(1, sizeof(Transit_Data)); + td->cd = cd; + td->orig_anim = !!(orig_show_anim); + td->freeze_events = + efl_canvas_object_freeze_events_get(cd->content); + + efl_event_callback_add(cd->content, + EFL_CANVAS_OBJECT_EVENT_ANIM_STARTED, + _anim_started_cb, NULL); + efl_event_callback_add(cd->content, + EFL_CANVAS_OBJECT_EVENT_ANIM_ENDED, + _anim_ended_cb, td); + + /* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set() + * internally. + * Therefore, efl_ui_widget_resize_object_set() is called after + * setting animation and efl_gfx_entity_visible_set() is not called. */ + efl_ui_widget_resize_object_set(obj, cd->content); +} + +static void +_hide_content_with_anim(Efl_Ui_Stack *obj EINA_UNUSED, Content_Data *cd) +{ + Efl_Canvas_Animation *orig_hide_anim = + efl_canvas_object_event_animation_get(cd->content, + EFL_GFX_ENTITY_EVENT_HIDE); + //Hide with animation. + if (!orig_hide_anim) + efl_canvas_object_event_animation_set(cd->content, + EFL_GFX_ENTITY_EVENT_HIDE, + hide_anim); + + Transit_Data *td = calloc(1, sizeof(Transit_Data)); + td->cd = cd; + td->orig_anim = !!(orig_hide_anim); + td->freeze_events = efl_canvas_object_freeze_events_get(cd->content); + + efl_event_callback_add(cd->content, + EFL_CANVAS_OBJECT_EVENT_ANIM_STARTED, + _anim_started_cb, NULL); + efl_event_callback_add(cd->content, + EFL_CANVAS_OBJECT_EVENT_ANIM_ENDED, + _anim_ended_cb, td); + + efl_gfx_entity_visible_set(cd->content, EINA_FALSE); +} + EOLIAN static void _efl_ui_stack_push(Eo *obj, Efl_Ui_Stack_Data *pd, Eo *content) { @@ -167,9 +276,6 @@ _efl_ui_stack_push(Eo *obj, Efl_Ui_Stack_Data *pd, Eo *content) { Eo *top_content = top_cd->content; - Efl_Canvas_Animation *orig_hide_anim = - efl_canvas_object_event_animation_get(top_content, EFL_GFX_ENTITY_EVENT_HIDE); - /* If content is being pushed now, then finish current animation and hide * the content without animation. */ if (top_cd->on_pushing) @@ -178,104 +284,25 @@ _efl_ui_stack_push(Eo *obj, Efl_Ui_Stack_Data *pd, Eo *content) efl_canvas_object_event_animation_set(top_content, EFL_GFX_ENTITY_EVENT_SHOW, NULL); - //Hide without animation. - if (orig_hide_anim) - efl_canvas_object_event_animation_set(top_content, - EFL_GFX_ENTITY_EVENT_HIDE, NULL); - - efl_gfx_entity_visible_set(top_content, EINA_FALSE); - - if (orig_hide_anim) - efl_canvas_object_event_animation_set(top_content, - EFL_GFX_ENTITY_EVENT_HIDE, - orig_hide_anim); - - //Deactivated Event - Efl_Ui_Stack_Event_Deactivated deactivated_info; - deactivated_info.content = top_content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_DEACTIVATED, - &deactivated_info); - - //Unloaded Event - Efl_Ui_Stack_Event_Unloaded unloaded_info; - unloaded_info.content = top_content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_UNLOADED, - &unloaded_info); + _hide_content_without_anim(obj, top_content); + _announce_hiding(obj, top_content); } else { top_cd->on_pushing = EINA_TRUE; - //Hide with animation. - if (!orig_hide_anim) - efl_canvas_object_event_animation_set(top_content, - EFL_GFX_ENTITY_EVENT_HIDE, - hide_anim); - - Transit_Data *td = calloc(1, sizeof(Transit_Data)); - td->cd = top_cd; - td->orig_anim = !!(orig_hide_anim); - td->freeze_events = efl_canvas_object_freeze_events_get(top_content); - - efl_event_callback_add(top_content, - EFL_CANVAS_OBJECT_EVENT_ANIM_STARTED, - _anim_started_cb, NULL); - efl_event_callback_add(top_content, - EFL_CANVAS_OBJECT_EVENT_ANIM_ENDED, - _anim_ended_cb, td); - - efl_gfx_entity_visible_set(top_content, EINA_FALSE); + _hide_content_with_anim(obj, top_cd); } } /* Prepare transition for new content. * Hide new content without animation. */ - { - cd->on_pushing = EINA_TRUE; - - Efl_Canvas_Animation *orig_hide_anim = - efl_canvas_object_event_animation_get(content, EFL_GFX_ENTITY_EVENT_HIDE); - - //Hide without animation. - if (orig_hide_anim) - efl_canvas_object_event_animation_set(content, EFL_GFX_ENTITY_EVENT_HIDE, NULL); - efl_gfx_entity_visible_set(content, EINA_FALSE); - - //Restore original hide animation - if (orig_hide_anim) - efl_canvas_object_event_animation_set(content, EFL_GFX_ENTITY_EVENT_HIDE, - orig_hide_anim); - } + cd->on_pushing = EINA_TRUE; + _hide_content_without_anim(obj, content); /* Apply transition to new content. * Show new content with animation. */ - { - evas_object_raise(content); - - Efl_Canvas_Animation *orig_show_anim = - efl_canvas_object_event_animation_get(content, EFL_GFX_ENTITY_EVENT_SHOW); - - //Show with animation - if (!orig_show_anim) - efl_canvas_object_event_animation_set(content, EFL_GFX_ENTITY_EVENT_SHOW, - show_anim); - - Transit_Data *td = calloc(1, sizeof(Transit_Data)); - td->cd = cd; - td->orig_anim = !!(orig_show_anim); - td->freeze_events = efl_canvas_object_freeze_events_get(content); - - efl_event_callback_add(content, EFL_CANVAS_OBJECT_EVENT_ANIM_STARTED, - _anim_started_cb, NULL); - efl_event_callback_add(content, EFL_CANVAS_OBJECT_EVENT_ANIM_ENDED, - _anim_ended_cb, td); - - /* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set() - * internally. - * Therefore, efl_ui_widget_resize_object_set() is called after - * setting animation and efl_gfx_entity_visible_set() is not called. */ - efl_ui_widget_resize_object_set(obj, content); - } + _show_content_with_anim(obj, cd); } static void @@ -306,9 +333,6 @@ _efl_ui_stack_pop(Eo *obj, Efl_Ui_Stack_Data *pd) { Eo *top_content = top_cd->content; - Efl_Canvas_Animation *orig_hide_anim = - efl_canvas_object_event_animation_get(top_content, EFL_GFX_ENTITY_EVENT_HIDE); - /* If content is being popped now, then finish current animation and show * the content without animation. */ if (top_cd->on_popping) @@ -317,61 +341,18 @@ _efl_ui_stack_pop(Eo *obj, Efl_Ui_Stack_Data *pd) efl_canvas_object_event_animation_set(top_content, EFL_GFX_ENTITY_EVENT_SHOW, NULL); - //Hide without animation. - if (orig_hide_anim) - efl_canvas_object_event_animation_set(top_content, - EFL_GFX_ENTITY_EVENT_HIDE, NULL); - - efl_gfx_entity_visible_set(top_content, EINA_FALSE); - - if (orig_hide_anim) - efl_canvas_object_event_animation_set(top_content, - EFL_GFX_ENTITY_EVENT_HIDE, - orig_hide_anim); - - //Deactivated Event - Efl_Ui_Stack_Event_Deactivated deactivated_info; - deactivated_info.content = top_content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_DEACTIVATED, - &deactivated_info); - - //Unloaded Event - Efl_Ui_Stack_Event_Unloaded unloaded_info; - unloaded_info.content = top_content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_UNLOADED, - &unloaded_info); - - efl_canvas_object_event_animation_set(top_content, - EFL_GFX_ENTITY_EVENT_SHOW, - NULL); + _hide_content_without_anim(obj, top_content); + _announce_hiding(obj, top_content); } else { top_cd->on_popping = EINA_TRUE; - //Hide with animation. - if (!orig_hide_anim) - efl_canvas_object_event_animation_set(top_content, - EFL_GFX_ENTITY_EVENT_HIDE, - hide_anim); - //Deallocate content data when hide animation is finished. efl_event_callback_add(top_content, EFL_GFX_ENTITY_EVENT_HIDE, _pop_content_hide_cb, top_cd); - Transit_Data *td = calloc(1, sizeof(Transit_Data)); - td->cd = top_cd; - td->orig_anim = !!(orig_hide_anim); - td->freeze_events = efl_canvas_object_freeze_events_get(top_content); - - efl_event_callback_add(top_content, - EFL_CANVAS_OBJECT_EVENT_ANIM_STARTED, - _anim_started_cb, NULL); - efl_event_callback_add(top_content, - EFL_CANVAS_OBJECT_EVENT_ANIM_ENDED, - _anim_ended_cb, td); - - efl_gfx_entity_visible_set(top_content, EINA_FALSE); + _hide_content_with_anim(obj, top_cd); } } @@ -398,36 +379,7 @@ _efl_ui_stack_pop(Eo *obj, Efl_Ui_Stack_Data *pd) /* Apply transition to previous content. * Show previous content with animation. */ - { - Efl_Canvas_Animation *orig_show_anim = - efl_canvas_object_event_animation_get(prev_content, - EFL_GFX_ENTITY_EVENT_SHOW); - - //Show with animation - if (!orig_show_anim) - efl_canvas_object_event_animation_set(prev_content, - EFL_GFX_ENTITY_EVENT_SHOW, - show_anim); - - Transit_Data *td = calloc(1, sizeof(Transit_Data)); - td->cd = prev_cd; - td->orig_anim = !!(orig_show_anim); - td->freeze_events = - efl_canvas_object_freeze_events_get(prev_content); - - efl_event_callback_add(prev_content, - EFL_CANVAS_OBJECT_EVENT_ANIM_STARTED, - _anim_started_cb, NULL); - efl_event_callback_add(prev_content, - EFL_CANVAS_OBJECT_EVENT_ANIM_ENDED, - _anim_ended_cb, td); - - /* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set() - * internally. - * Therefore, efl_ui_widget_resize_object_set() is called after - * setting animation and efl_gfx_entity_visible_set() is not called. */ - efl_ui_widget_resize_object_set(obj, prev_content); - } + _show_content_with_anim(obj, prev_cd); } return NULL; @@ -486,72 +438,14 @@ _efl_ui_stack_insert_after(Eo *obj, Efl_Ui_Stack_Data *pd, if (pd->stack->last == EINA_INLIST_GET(cd)) { - //Loaded Event - Efl_Ui_Stack_Event_Loaded loaded_info; - loaded_info.content = content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_LOADED, - &loaded_info); - /* Do not apply transition for insert. * Hide top content without animation. */ - { - Efl_Canvas_Animation *orig_hide_anim = - efl_canvas_object_event_animation_get(base_cd->content, - EFL_GFX_ENTITY_EVENT_HIDE); - - if (orig_hide_anim) - efl_canvas_object_event_animation_set(base_cd->content, - EFL_GFX_ENTITY_EVENT_HIDE, NULL); - - efl_gfx_entity_visible_set(base_cd->content, EINA_FALSE); - - if (orig_hide_anim) - efl_canvas_object_event_animation_set(base_cd->content, - EFL_GFX_ENTITY_EVENT_HIDE, - orig_hide_anim); - } - - //Deactivated Event - Efl_Ui_Stack_Event_Deactivated deactivated_info; - deactivated_info.content = base_cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_DEACTIVATED, - &deactivated_info); - - //Unloaded Event - Efl_Ui_Stack_Event_Unloaded unloaded_info; - unloaded_info.content = base_cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_UNLOADED, - &unloaded_info); - + _hide_content_without_anim(obj, base_cd->content); + _announce_hiding(obj, base_cd->content); /* Do not apply transition for insert. * Show new content without animation. */ - { - Efl_Canvas_Animation *orig_show_anim = - efl_canvas_object_event_animation_get(content, - EFL_GFX_ENTITY_EVENT_SHOW); - - if (orig_show_anim) - efl_canvas_object_event_animation_set(content, EFL_GFX_ENTITY_EVENT_SHOW, - NULL); - - evas_object_raise(content); - /* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set() - * internally. - * Therefore, efl_ui_widget_resize_object_set() is called after - * setting animation and efl_gfx_entity_visible_set() is not called. */ - efl_ui_widget_resize_object_set(obj, content); - - if (orig_show_anim) - efl_canvas_object_event_animation_set(content, EFL_GFX_ENTITY_EVENT_SHOW, - orig_show_anim); - } - - //Activated Event - Efl_Ui_Stack_Event_Activated activated_info; - activated_info.content = content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_ACTIVATED, - &activated_info); + _show_content_without_anim(obj, content); } } @@ -607,72 +501,15 @@ _efl_ui_stack_insert_at(Eo *obj, Efl_Ui_Stack_Data *pd, if (pd->stack->last == EINA_INLIST_GET(cd)) { - //Loaded Event - Efl_Ui_Stack_Event_Loaded loaded_info; - loaded_info.content = content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_LOADED, - &loaded_info); /* Do not apply transition for insert. * Hide top content without animation. */ - { - Efl_Canvas_Animation *orig_hide_anim = - efl_canvas_object_event_animation_get(base_cd->content, - EFL_GFX_ENTITY_EVENT_HIDE); - - if (orig_hide_anim) - efl_canvas_object_event_animation_set(base_cd->content, - EFL_GFX_ENTITY_EVENT_HIDE, NULL); - - efl_gfx_entity_visible_set(base_cd->content, EINA_FALSE); - - if (orig_hide_anim) - efl_canvas_object_event_animation_set(base_cd->content, - EFL_GFX_ENTITY_EVENT_HIDE, - orig_hide_anim); - } - - //Deactivated Event - Efl_Ui_Stack_Event_Deactivated deactivated_info; - deactivated_info.content = base_cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_DEACTIVATED, - &deactivated_info); - - //Unloaded Event - Efl_Ui_Stack_Event_Unloaded unloaded_info; - unloaded_info.content = base_cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_UNLOADED, - &unloaded_info); - + _hide_content_without_anim(obj, base_cd->content); + _announce_hiding(obj, base_cd->content); /* Do not apply transition for insert. * Show new content without animation. */ - { - Efl_Canvas_Animation *orig_show_anim = - efl_canvas_object_event_animation_get(content, - EFL_GFX_ENTITY_EVENT_SHOW); - - if (orig_show_anim) - efl_canvas_object_event_animation_set(content, EFL_GFX_ENTITY_EVENT_SHOW, - NULL); - - evas_object_raise(content); - /* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set() - * internally. - * Therefore, efl_ui_widget_resize_object_set() is called after - * setting animation and efl_gfx_entity_visible_set() is not called. */ - efl_ui_widget_resize_object_set(obj, content); - - if (orig_show_anim) - efl_canvas_object_event_animation_set(content, EFL_GFX_ENTITY_EVENT_SHOW, - orig_show_anim); - } - - //Activated Event - Efl_Ui_Stack_Event_Activated activated_info; - activated_info.content = content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_ACTIVATED, - &activated_info); + _show_content_without_anim(obj, content); } } @@ -710,17 +547,7 @@ _efl_ui_stack_remove(Eo *obj, Efl_Ui_Stack_Data *pd, Eo *content) pd->stack = eina_inlist_remove(pd->stack, EINA_INLIST_GET(cd)); - //Deactivated Event - Efl_Ui_Stack_Event_Deactivated deactivated_info; - deactivated_info.content = cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_DEACTIVATED, - &deactivated_info); - - //Unloaded Event - Efl_Ui_Stack_Event_Unloaded unloaded_info; - unloaded_info.content = cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_UNLOADED, - &unloaded_info); + _announce_hiding(obj, cd->content); _content_data_del(cd); if (remove_top) @@ -729,42 +556,10 @@ _efl_ui_stack_remove(Eo *obj, Efl_Ui_Stack_Data *pd, Eo *content) { Content_Data *new_top_cd = EINA_INLIST_CONTAINER_GET(pd->stack->last, Content_Data); - //Loaded Event - Efl_Ui_Stack_Event_Loaded loaded_info; - loaded_info.content = new_top_cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_LOADED, - &loaded_info); /* Do not apply transition for insert. * Show new content without animation. */ - { - Efl_Canvas_Animation *orig_show_anim = - efl_canvas_object_event_animation_get(new_top_cd->content, - EFL_GFX_ENTITY_EVENT_SHOW); - - if (orig_show_anim) - efl_canvas_object_event_animation_set(new_top_cd->content, - EFL_GFX_ENTITY_EVENT_SHOW, - NULL); - - evas_object_raise(new_top_cd->content); - /* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set() - * internally. - * Therefore, efl_ui_widget_resize_object_set() is called after - * setting animation and efl_gfx_entity_visible_set() is not called. */ - efl_ui_widget_resize_object_set(obj, new_top_cd->content); - - if (orig_show_anim) - efl_canvas_object_event_animation_set(new_top_cd->content, - EFL_GFX_ENTITY_EVENT_SHOW, - orig_show_anim); - } - - //Activated Event - Efl_Ui_Stack_Event_Activated activated_info; - activated_info.content = new_top_cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_ACTIVATED, - &activated_info); + _show_content_without_anim(obj, new_top_cd->content); } } } @@ -802,17 +597,7 @@ _efl_ui_stack_remove_at(Eo *obj, Efl_Ui_Stack_Data *pd, pd->stack = eina_inlist_remove(pd->stack, EINA_INLIST_GET(cd)); - //Deactivated Event - Efl_Ui_Stack_Event_Deactivated deactivated_info; - deactivated_info.content = cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_DEACTIVATED, - &deactivated_info); - - //Unloaded Event - Efl_Ui_Stack_Event_Unloaded unloaded_info; - unloaded_info.content = cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_UNLOADED, - &unloaded_info); + _announce_hiding(NULL, cd->content); _content_data_del(cd); //FIXME: Apply transition here. @@ -822,42 +607,9 @@ _efl_ui_stack_remove_at(Eo *obj, Efl_Ui_Stack_Data *pd, { Content_Data *new_top_cd = EINA_INLIST_CONTAINER_GET(pd->stack->last, Content_Data); - //Loaded Event - Efl_Ui_Stack_Event_Loaded loaded_info; - loaded_info.content = new_top_cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_LOADED, - &loaded_info); - /* Do not apply transition for insert. * Show new content without animation. */ - { - Efl_Canvas_Animation *orig_show_anim = - efl_canvas_object_event_animation_get(new_top_cd->content, - EFL_GFX_ENTITY_EVENT_SHOW); - - if (orig_show_anim) - efl_canvas_object_event_animation_set(new_top_cd->content, - EFL_GFX_ENTITY_EVENT_SHOW, - NULL); - - evas_object_raise(new_top_cd->content); - /* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set() - * internally. - * Therefore, efl_ui_widget_resize_object_set() is called after - * setting animation and efl_gfx_entity_visible_set() is not called. */ - efl_ui_widget_resize_object_set(obj, new_top_cd->content); - - if (orig_show_anim) - efl_canvas_object_event_animation_set(new_top_cd->content, - EFL_GFX_ENTITY_EVENT_SHOW, - orig_show_anim); - } - - //Activated Event - Efl_Ui_Stack_Event_Activated activated_info; - activated_info.content = new_top_cd->content; - efl_event_callback_call(obj, EFL_UI_STACK_EVENT_ACTIVATED, - &activated_info); + _show_content_without_anim(obj, new_top_cd->content); } } } --
