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);
           }
      }
 }

-- 


Reply via email to