[elm_navigationbar_ex]: Animation optimization and theme optimizatin, animation disab...
authorshilpa singh <shilpa.singh@samsung.com>
Wed, 1 Dec 2010 11:59:25 +0000 (17:29 +0530)
committershilpa singh <shilpa.singh@samsung.com>
Wed, 1 Dec 2010 11:59:25 +0000 (17:29 +0530)
src/lib/Elementary.h.in
src/lib/elm_navigationbar_ex.c

index fa345fb..98d79bf 100644 (file)
@@ -2243,6 +2243,7 @@ extern "C" {
    EAPI Evas_Object *elm_navigationbar_ex_item_icon_get(Elm_Navigationbar_ex_Item* item);
    EAPI void         elm_navigationbar_ex_item_icon_set(Elm_Navigationbar_ex_Item* item, Evas_Object *icon);
    EAPI Evas_Object *elm_navigationbar_ex_item_title_button_unset(Elm_Navigationbar_ex_Item* item, int button_type);
+   EAPI void         elm_navigationbar_ex_animation_disable_set(Evas_Object *obj, Eina_Bool disable);
    
    
    /* Tab Bar */
index f618ba3..ea6654c 100644 (file)
@@ -33,14 +33,16 @@ typedef struct _function_button fn_button;
 struct _Widget_Data\r
 {\r
    Eina_List *stack, *to_delete;\r
-   Elm_Navigationbar_ex_Item *top;\r
+   Elm_Navigationbar_ex_Item *top, *oldtop;\r
    Evas_Object *rect, *clip;\r
    Eina_Bool del_on_pop : 1;\r
+   Eina_Bool disable_animation: 1;\r
 };\r
 \r
 struct _Elm_Navigationbar_ex_Item\r
 {\r
    Evas_Object *obj, *base, *content;\r
+   Evas_Object *t_base, *ct_base;\r
    Evas_Coord minw, minh;\r
    const char *title;\r
    const char *subtitle;\r
@@ -82,7 +84,7 @@ _content_unset(Elm_Navigationbar_ex_Item* item)
        if(!item->content) return NULL; \r
        content = item->content;\r
        elm_widget_sub_object_del(item->obj,item->content);\r
-       edje_object_part_unswallow(item->base,item->content);   \r
+       edje_object_part_unswallow(item->ct_base,item->content);        \r
        item->content = NULL;\r
        evas_object_hide(content);\r
        return content;\r
@@ -91,17 +93,26 @@ _content_unset(Elm_Navigationbar_ex_Item* item)
 static void\r
 _theme_hook(Evas_Object *obj)\r
 {\r
-   Widget_Data *wd = elm_widget_data_get(obj);\r
-   Eina_List *l;\r
-   char buf_fn[1024];\r
-   Elm_Navigationbar_ex_Item *it;\r
-   if (!wd) return;\r
+       Widget_Data *wd = elm_widget_data_get(obj);\r
+       Eina_List *l;\r
+       char buf_fn[1024];\r
+       char buf[1024];\r
+       Elm_Navigationbar_ex_Item *it;\r
+       if (!wd) return;\r
    EINA_LIST_FOREACH(wd->stack, l, it)\r
        {\r
        Eina_List *bl;\r
        fn_button *btn;\r
-     edje_object_scale_set(it->base, elm_widget_scale_get(obj) * \r
+   edje_object_scale_set(it->base, elm_widget_scale_get(obj) * \r
                            _elm_config->scale);\r
+\r
+   strncpy(buf, "item/", sizeof(buf));\r
+   strncat(buf, it->item_style, sizeof(buf) - strlen(buf));\r
+   _elm_theme_object_set(obj, it->t_base,  "navigationbar_ex", buf, elm_widget_style_get(obj));\r
+\r
+       _elm_theme_object_set(obj, it->ct_base,  "navigationbar_ex", "content", elm_widget_style_get(obj));\r
+       _elm_theme_object_set(obj, it->base,  "navigationbar_ex", "base", elm_widget_style_get(obj));\r
+\r
         EINA_LIST_FOREACH(it->fnbtn_list, bl, btn)\r
                {\r
                        if(btn->btn_id == ELM_NAVIGATIONBAR_EX_BACK_BUTTON)\r
@@ -144,61 +155,116 @@ _changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
    evas_object_size_hint_min_get(it->content, &minw, &minh);\r
    // FIXME: why is this needed? how does edje get this unswallowed or\r
    // lose its callbacks to edje\r
-   edje_object_part_swallow(it->base, "elm.swallow.content", it->content);\r
+   edje_object_part_swallow(it->ct_base, "elm.swallow.content", it->content);\r
    edje_object_size_min_calc(it->base, &it->minw, &it->minh);\r
    _sizing_eval(it->obj);\r
 }\r
 \r
 static void\r
-_eval_top(Evas_Object *obj, Eina_Bool push)\r
+_eval_top(Evas_Object *obj)\r
 {\r
    Widget_Data *wd = elm_widget_data_get(obj);\r
-   Eina_Bool animate=EINA_TRUE;\r
-   Elm_Navigationbar_ex_Item *ittop;\r
+   Eina_Bool animate = EINA_TRUE;\r
+   Elm_Navigationbar_ex_Item *ittop = NULL;\r
    if (!wd) return;\r
    if (!wd->stack) return;\r
    ittop = eina_list_last(wd->stack)->data;\r
    if (ittop != wd->top)\r
      {\r
-       Evas_Object *o;\r
+       Evas_Object *o, *o1, *o2;\r
        const char *onshow, *onhide;\r
 \r
        if (wd->top)\r
          {\r
             o = wd->top->base;\r
-            edje_object_signal_emit(o, "elm,action,hide", "elm");\r
-            onhide = edje_object_data_get(o, "onhide");\r
+                o1 = wd->top->ct_base;\r
+                o2 = wd->top->t_base;/*make use of the signals sent for animation*/\r
+\r
+                /*issue to fix, hide signal does not come for t_base, increasing time helps \r
+                in getting correct events in pop*/\r
+               if(wd->disable_animation)\r
+                       {\r
+                               edje_object_signal_emit(o2, "elm,action,hide,noanimate", "elm");\r
+                               edje_object_signal_emit(o1, "elm,action,hide,noanimate", "elm");                                \r
+                       }\r
+            else if (wd->top->popme)\r
+                       {       \r
+                               edje_object_signal_emit(o2, "elm,action,pop", "elm");\r
+                               edje_object_signal_emit(o1, "elm,action,pop", "elm");\r
+               }\r
+            else\r
+               {\r
+                       edje_object_signal_emit(o2, "elm,action,hide", "elm");\r
+                               edje_object_signal_emit(o1, "elm,action,hide", "elm");\r
+               }\r
+            onhide = edje_object_data_get(o1, "onhide");\r
             if (onhide)\r
               {\r
-                 if (!strcmp(onhide, "raise")) evas_object_raise(o);\r
-                 else if (!strcmp(onhide, "lower")) evas_object_lower(o);\r
+                 if (!strcmp(onhide, "raise")) {\r
+                                       evas_object_raise(o2);\r
+                                       evas_object_raise(o1);\r
+                               }\r
+                 else if (!strcmp(onhide, "lower")) \r
+                               {\r
+                                       evas_object_lower(o2);\r
+                                       evas_object_lower(o1);                          \r
+                               }\r
               }\r
          }\r
        else\r
          {\r
             animate = EINA_FALSE;\r
          }\r
+       wd->oldtop = wd->top;\r
        wd->top = ittop;\r
        o = wd->top->base;\r
+       o1 = wd->top->ct_base;\r
+       o2 = wd->top->t_base;\r
        evas_object_show(o);\r
-       if(animate)\r
-               {\r
-               if(push)\r
-         edje_object_signal_emit(o, "elm,action,show,push", "elm");\r
-               else\r
-         edje_object_signal_emit(o, "elm,action,show,pop", "elm");\r
+       evas_object_show(o2);\r
+       evas_object_show(o1);\r
+\r
+        if ((!animate)||(wd->disable_animation))\r
+               {       \r
+                       edje_object_signal_emit(o2, "elm,action,show,noanimate", "elm");\r
+                       edje_object_signal_emit(o1, "elm,action,show,noanimate", "elm");                        \r
                }\r
+    else if (wd->oldtop)\r
+      {\r
+         if (elm_object_focus_get(wd->oldtop->content))\r
+           elm_object_focus(wd->top->content);\r
+         if (wd->oldtop->popme)\r
+               {\r
+                       edje_object_signal_emit(o2, "elm,action,show", "elm");\r
+                               edje_object_signal_emit(o1, "elm,action,show", "elm");                                  \r
+               }\r
+         else\r
+               {\r
+                       edje_object_signal_emit(o2, "elm,action,push", "elm");\r
+                               edje_object_signal_emit(o1, "elm,action,push", "elm");\r
+               }\r
+      }\r
        else\r
-         edje_object_signal_emit(o, "elm,action,show,noanimate", "elm");\r
-       onshow = edje_object_data_get(o, "onshow");\r
+               {\r
+                       edje_object_signal_emit(o2, "elm,action,push", "elm");\r
+                       edje_object_signal_emit(o1, "elm,action,push", "elm");\r
+               }\r
+       onshow = edje_object_data_get(o1, "onshow");\r
        if (onshow)\r
          {\r
-            if (!strcmp(onshow, "raise")) evas_object_raise(o);\r
-            else if (!strcmp(onshow, "lower")) evas_object_lower(o);            \r
+            if (!strcmp(onshow, "raise")) {\r
+                               evas_object_raise(o2);\r
+                               evas_object_raise(o1);\r
+               }\r
+            else if (!strcmp(onshow, "lower")) {\r
+                               evas_object_lower(o2);\r
+                               evas_object_lower(o1);\r
+               }\r
          }\r
-     }\r
+    }\r
 }\r
 \r
+\r
 static void\r
 _move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)\r
 {\r
@@ -238,10 +304,13 @@ _sub_del(void *data, Evas_Object *obj __UNUSED__, void *event_info)
                        }\r
                if(it->item_style) eina_stringshare_del(it->item_style);\r
                if(it->title_obj) evas_object_del(it->title_obj);\r
-            evas_object_del(it->base);\r
-            _eval_top(it->obj, EINA_FALSE);\r
-            free(it);\r
-            return;\r
+               if(it->icon) evas_object_del(it->icon);\r
+               evas_object_del(it->t_base);\r
+               evas_object_del(it->ct_base);\r
+               evas_object_del(it->base);\r
+               _eval_top(it->obj);\r
+               free(it);\r
+               return;\r
          }\r
      }\r
 }\r
@@ -264,10 +333,14 @@ _signal_hide_finished(void *data, Evas_Object *obj __UNUSED__, const char *emiss
    Elm_Navigationbar_ex_Item *it = data;\r
    Evas_Object *obj2 = it->obj;\r
    Widget_Data *wd = elm_widget_data_get(it->obj);\r
+   evas_object_hide(it->t_base);\r
+   evas_object_hide(it->ct_base);\r
    evas_object_hide(it->base);\r
-   edje_object_signal_emit(it->base, "elm,action,reset", "elm");\r
+       edje_object_signal_emit(it->t_base, "elm,action,reset", "elm");\r
+       edje_object_signal_emit(it->ct_base, "elm,action,reset", "elm");\r
    evas_object_smart_callback_call(obj2, "hide,finished", it->content);\r
-   edje_object_message_signal_process(it->base);\r
+   edje_object_message_signal_process(it->t_base);      \r
+   edje_object_message_signal_process(it->ct_base);\r
    if(it->popme)\r
        {\r
                if(wd->del_on_pop)\r
@@ -295,7 +368,7 @@ static void _item_promote(Elm_Navigationbar_ex_Item* item)
          {\r
             wd->stack = eina_list_remove_list(wd->stack, l);\r
             wd->stack = eina_list_append(wd->stack, it);\r
-            _eval_top(it->obj, EINA_FALSE);\r
+            _eval_top(it->obj);\r
             return;\r
          }\r
      }\r
@@ -323,8 +396,11 @@ _process_deletions(Widget_Data *wd)
                                }\r
                        if(it->title_obj) evas_object_del(it->title_obj);               \r
                        if(it->content)  evas_object_del(it->content);\r
+                       if(it->icon) evas_object_del(it->icon);\r
+                       evas_object_del(it->t_base);\r
+                       evas_object_del(it->ct_base);\r
                        evas_object_del(it->base);\r
-                       _eval_top(it->obj, EINA_FALSE);\r
+                       _eval_top(it->obj);\r
                        free(it);\r
                        it = NULL;\r
                }       \r
@@ -354,7 +430,7 @@ elm_navigationbar_ex_add(Evas_Object *parent)
    elm_widget_data_set(obj, wd);\r
    elm_widget_del_hook_set(obj, _del_hook);\r
    elm_widget_theme_hook_set(obj, _theme_hook);\r
-\r
+   elm_widget_can_focus_set(obj, EINA_FALSE);\r
    wd->clip = evas_object_rectangle_add(e);\r
    elm_widget_resize_object_set(obj, wd->clip);\r
    elm_widget_sub_object_add(obj, wd->clip);\r
@@ -401,29 +477,47 @@ elm_navigationbar_ex_item_push(Evas_Object *obj, Evas_Object *content, const cha
    it->obj = obj;\r
    it->content = content;\r
    it->base = edje_object_add(evas_object_evas_get(obj));\r
+   it->ct_base = edje_object_add(evas_object_evas_get(obj));\r
+   it->t_base = edje_object_add(evas_object_evas_get(obj));\r
+\r
    evas_object_smart_member_add(it->base, obj);\r
+   evas_object_smart_member_add(it->ct_base, obj);\r
+   evas_object_smart_member_add(it->t_base, obj);\r
+        \r
    evas_object_geometry_get(obj, &x, &y, &w, &h);\r
    evas_object_move(it->base, x, y);\r
    evas_object_resize(it->base, w, h);\r
    evas_object_clip_set(it->base, wd->clip);\r
-   elm_widget_sub_object_add(obj, it->base);\r
-   elm_widget_sub_object_add(obj, it->content);\r
-   strncpy(buf, "item/", sizeof(buf));\r
+        \r
+       elm_widget_sub_object_add(obj, it->base);\r
+       elm_widget_sub_object_add(obj, it->ct_base);\r
+       elm_widget_sub_object_add(obj, it->t_base);\r
+\r
+       elm_widget_sub_object_add(obj, it->content);\r
+\r
+       _elm_theme_object_set(obj, it->base,  "navigationbar_ex", "base", elm_widget_style_get(obj));\r
+       _elm_theme_object_set(obj, it->ct_base,  "navigationbar_ex", "content", elm_widget_style_get(obj));\r
+\r
+       strncpy(buf, "item/", sizeof(buf));\r
    strncat(buf, item_style, sizeof(buf) - strlen(buf));\r
    if (!eina_stringshare_replace(&it->item_style, item_style)) return NULL;\r
-   \r
-   _elm_theme_object_set(obj, it->base,  "navigationbar_ex", buf, elm_widget_style_get(obj));\r
-   edje_object_signal_callback_add(it->base, "elm,action,hide,finished", "", \r
-                                   _signal_hide_finished, it);\r
-   evas_object_event_callback_add(it->content,\r
-                                  EVAS_CALLBACK_CHANGED_SIZE_HINTS,\r
-                                 _changed_size_hints, it);\r
-   edje_object_part_swallow(it->base, "elm.swallow.content", it->content);\r
+   _elm_theme_object_set(obj, it->t_base,  "navigationbar_ex", buf, elm_widget_style_get(obj));\r
+\r
+\r
+       edje_object_part_swallow(it->base, "elm.swallow.title", it->t_base);\r
+       edje_object_part_swallow(it->base, "elm.swallow.content", it->ct_base);\r
+\r
+       edje_object_signal_callback_add(it->ct_base, "elm,action,hide,finished", "", \r
+                                    _signal_hide_finished, it);\r
+       evas_object_event_callback_add(it->content,\r
+                                   EVAS_CALLBACK_CHANGED_SIZE_HINTS,\r
+                 _changed_size_hints, it);\r
+   edje_object_part_swallow(it->ct_base, "elm.swallow.content", it->content);\r
    edje_object_size_min_calc(it->base, &it->minw, &it->minh);\r
    evas_object_data_set(it->base, "_elm_leaveme", obj);\r
    evas_object_show(it->content);\r
    wd->stack = eina_list_append(wd->stack, it);\r
-   _eval_top(obj, EINA_TRUE);\r
+   _eval_top(obj);\r
    _sizing_eval(obj);\r
    return it;\r
 }\r
@@ -441,8 +535,14 @@ elm_navigationbar_ex_item_title_label_set( Elm_Navigationbar_ex_Item* item,
 {\r
        if(!item) return;\r
        if (!eina_stringshare_replace(&item->title, title)) return;\r
-       if (item->base)\r
-     edje_object_part_text_set(item->base, "elm.text", item->title);   \r
+       if (item->t_base)\r
+       {\r
+               if((item->title_obj)&&(item->title))\r
+                       {\r
+                               edje_object_signal_emit(item->base, "elm,state,extend,title", "elm");\r
+                       }       \r
+        edje_object_part_text_set(item->t_base, "elm.text", item->title);      \r
+       }\r
 }\r
 \r
 /**\r
@@ -474,8 +574,8 @@ elm_navigationbar_ex_item_subtitle_label_set( Elm_Navigationbar_ex_Item* item,
 {\r
        if(!item) return;\r
        if (!eina_stringshare_replace(&item->subtitle, subtitle)) return;\r
-       if (item->base)\r
-     edje_object_part_text_set(item->base, "elm.text.sub", item->subtitle);    \r
+       if (item->t_base)\r
+     edje_object_part_text_set(item->t_base, "elm.text.sub", item->subtitle);  \r
 }\r
 \r
 /**\r
@@ -498,9 +598,9 @@ EAPI void
 elm_navigationbar_ex_item_icon_set(Elm_Navigationbar_ex_Item* item, Evas_Object *icon)\r
 {\r
        if(!item) return; \r
-       edje_object_part_swallow(item->base, "elm.swallow.icon", icon);\r
+       edje_object_part_swallow(item->t_base, "elm.swallow.icon", icon);\r
        elm_widget_sub_object_add(item->obj, icon);\r
-       edje_object_signal_emit(item->base, "elm,state,icon,visible", "elm");\r
+       edje_object_signal_emit(item->t_base, "elm,state,icon,visible", "elm");\r
        item->icon = icon;\r
 }\r
 \r
@@ -563,7 +663,7 @@ elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char
                elm_button_icon_set(btn, icon);\r
        elm_object_focus_allow_set(btn, EINA_FALSE); \r
        evas_object_smart_callback_add(btn, "clicked", func, data);\r
-       edje_object_part_swallow(item->base, buf, btn);\r
+       edje_object_part_swallow(item->t_base, buf, btn);\r
        elm_widget_sub_object_add(item->obj, btn);\r
        btn_det->btn = btn;\r
        btn_det->btn_id = button_type;\r
@@ -613,7 +713,7 @@ elm_navigationbar_ex_item_title_button_unset(Elm_Navigationbar_ex_Item* item, in
                                {\r
                                        btn_ret = btn_det->btn;\r
                                        elm_widget_sub_object_del(item->obj,btn_det->btn);\r
-                                       edje_object_part_unswallow(item->base,btn_det->btn);    \r
+                                       edje_object_part_unswallow(item->t_base,btn_det->btn);  \r
                                        item->fnbtn_list = eina_list_remove_list(item->fnbtn_list, bl);\r
                                        btn_det->btn = NULL;\r
                                        return btn_ret;\r
@@ -638,8 +738,12 @@ elm_navigationbar_ex_item_title_object_set(Elm_Navigationbar_ex_Item* item,
        item->title_obj = title_obj;\r
        if(title_obj)\r
                {\r
+                       if((item->title_obj)&&(item->title))\r
+                               {\r
+                                       edje_object_signal_emit(item->base, "elm,state,extend,title", "elm");\r
+                               }                       \r
                        elm_widget_sub_object_add(item->obj,title_obj);\r
-                       edje_object_part_swallow(item->base, "elm.swallow.title", title_obj);\r
+                       edje_object_part_swallow(item->t_base, "elm.swallow.title", title_obj);\r
                }\r
        _sizing_eval(item->obj);\r
 }\r
@@ -680,7 +784,7 @@ elm_navigationbar_ex_item_title_object_unset(Elm_Navigationbar_ex_Item* item)
        if(!item->title_obj) return NULL; \r
        title_obj = item->title_obj;\r
        elm_widget_sub_object_del(item->obj,item->title_obj);\r
-       edje_object_part_unswallow(item->base,item->title_obj); \r
+       edje_object_part_unswallow(item->t_base,item->title_obj);       \r
        item->title_obj = NULL;\r
        return title_obj;\r
 }\r
@@ -769,11 +873,11 @@ elm_navigationbar_ex_item_style_set(Elm_Navigationbar_ex_Item* item, const char*
        strncpy(buf, "item/", sizeof(buf));\r
        strncat(buf, item_style, sizeof(buf) - strlen(buf));\r
        if (!eina_stringshare_replace(&item->item_style, item_style)) return;\r
-       _elm_theme_object_set(item->obj, item->base,  "navigationbar_ex", buf, elm_widget_style_get(item->obj));\r
+       _elm_theme_object_set(item->obj, item->t_base,  "navigationbar_ex", buf, elm_widget_style_get(item->obj));\r
        if(item->title)\r
-               edje_object_part_text_set(item->base, "elm.text", item->title);\r
+               edje_object_part_text_set(item->t_base, "elm.text", item->title);\r
        if(item->subtitle)\r
-               edje_object_part_text_set(item->base, "elm.text.sub", item->subtitle);\r
+               edje_object_part_text_set(item->t_base, "elm.text.sub", item->subtitle);\r
        if(item->fnbtn_list)\r
                {\r
                        EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det)\r
@@ -839,7 +943,9 @@ EAPI void elm_navigationbar_ex_to_item_pop(Elm_Navigationbar_ex_Item* item)
    Eina_List *list;\r
    if (!wd) return;\r
    if (!wd->stack) return;\r
-   list = eina_list_last(wd->stack);\r
+       it = eina_list_last(wd->stack)->data;\r
+       it->popme = EINA_TRUE;\r
+       list = eina_list_last(wd->stack);\r
    if(list)\r
        {\r
                while(list)\r
@@ -856,7 +962,7 @@ EAPI void elm_navigationbar_ex_to_item_pop(Elm_Navigationbar_ex_Item* item)
                                list = list->prev;\r
                        }\r
        }  \r
-    _eval_top(it->obj, EINA_FALSE);\r
+    _eval_top(it->obj);\r
        if(wd->to_delete)\r
                _process_deletions(wd);\r
 }\r
@@ -889,18 +995,28 @@ elm_navigationbar_ex_item_pop(Evas_Object *obj)
        if (!ll)\r
          {\r
                \r
-            Evas_Object *o;\r
+            Evas_Object *o, *o2;\r
             const char *onhide;\r
 \r
             wd->top = it;\r
-            o = wd->top->base;\r
-                \r
-            edje_object_signal_emit(o, "elm,action,hide", "elm");\r
+               o = wd->top->ct_base;\r
+               o2 = wd->top->t_base;    \r
+\r
+               edje_object_signal_emit(o2, "elm,action,pop", "elm");\r
+               edje_object_signal_emit(o, "elm,action,pop", "elm");\r
             onhide = edje_object_data_get(o, "onhide");\r
             if (onhide)\r
               {\r
-                 if (!strcmp(onhide, "raise")) evas_object_raise(o);\r
-                 else if (!strcmp(onhide, "lower")) evas_object_lower(o);\r
+                 if (!strcmp(onhide, "raise")) \r
+                               {\r
+                                       evas_object_raise(o2);\r
+                                       evas_object_raise(o);\r
+                               }\r
+                 else if (!strcmp(onhide, "lower")) \r
+                               {\r
+                                       evas_object_lower(o2);\r
+                                       evas_object_lower(o);\r
+                               }\r
               }\r
             wd->top = NULL;\r
          }\r
@@ -953,4 +1069,21 @@ elm_navigationbar_ex_item_top_get(const Evas_Object *obj)
    return it;\r
 }\r
 \r
+/**\r
+ * This disables content animation on push/pop.\r
+ *\r
+ * @param obj The navigationbar_ex object\r
+ * @param disable  if EINA_TRUE animation is disabled.\r
+ *\r
+ * @ingroup Navigationbar_ex\r
+ */\r
+EAPI void\r
+elm_navigationbar_ex_animation_disable_set(Evas_Object *obj, \r
+                                                       Eina_Bool disable)\r
+{\r
+       ELM_CHECK_WIDTYPE(obj, widtype)NULL;\r
+       Widget_Data *wd = elm_widget_data_get(obj);\r
+       wd->disable_animation = disable;\r
+}\r
+\r
 \r