[elm_navigationbar_ex] - button deletion code added, if button with same ID exist...
authorshilpa singh <shilpa.singh@samsung.com>
Fri, 19 Nov 2010 10:50:28 +0000 (16:20 +0530)
committershilpa singh <shilpa.singh@samsung.com>
Fri, 19 Nov 2010 10:50:28 +0000 (16:20 +0530)
src/lib/elm_navigationbar_ex.c

index 769af8c..f618ba3 100644 (file)
@@ -528,11 +528,23 @@ elm_navigationbar_ex_item_icon_get(Elm_Navigationbar_ex_Item* item)
 elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char *btn_label, Evas_Object *icon, int button_type, Evas_Smart_Cb func, const void *data)\r
 {\r
        if(!item) return;\r
+       Eina_List *bl;\r
        Evas_Object *btn;\r
        char buf[1024],theme[1024];\r
-       fn_button *btn_det;\r
+       fn_button *btn_det = NULL;\r
+       EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det)\r
+               {\r
+                       if(btn_det->btn_id == button_type)\r
+                               {\r
+                                       evas_object_del(btn_det->btn);\r
+                                       free(btn_det);\r
+                                       btn_det = NULL;\r
+                                       item->fnbtn_list = eina_list_remove_list(item->fnbtn_list, bl);\r
+                               }\r
+               }       \r
        btn = elm_button_add(item->obj);\r
        btn_det = ELM_NEW(btn_det);\r
+       if(!btn_det) return;\r
        if(button_type == ELM_NAVIGATIONBAR_EX_BACK_BUTTON)\r
                {\r
                        snprintf(theme, sizeof(theme), "navigationbar_backbutton/%s", elm_widget_style_get(item->obj));\r
@@ -555,7 +567,7 @@ elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char
        elm_widget_sub_object_add(item->obj, btn);\r
        btn_det->btn = btn;\r
        btn_det->btn_id = button_type;\r
-       item->fnbtn_list = eina_list_append(item->fnbtn_list, btn_det);\r
+       item->fnbtn_list = eina_list_append(item->fnbtn_list, btn_det);         \r
 }\r
 \r
 /**\r