[multibuttonentry] 1. fix the bug that if an item is added when the box have no size...
authorHyunsil <hyunsil.park@samsung.com>
Fri, 24 Sep 2010 08:07:50 +0000 (17:07 +0900)
committerHyunsil <hyunsil.park@samsung.com>
Fri, 24 Sep 2010 08:07:50 +0000 (17:07 +0900)
src/lib/elm_multibuttonentry.c

index 0d5aedb..107fba0 100755 (executable)
@@ -10,6 +10,7 @@
                \r
 \r
 #define MAX_STR 256            \r
+#define MAX_W_BTN 200          \r
 \r
 \r
 typedef enum _Multibuttonentry_Pos\r
@@ -162,7 +163,7 @@ static void
 _set_label(Evas_Object *obj, const char* str)\r
 {\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
-       if(!wd) return;\r
+       if(!wd || !str) return;\r
 \r
        if(!wd->label){\r
                if(!(wd->label = elm_label_add(obj))) return;\r
@@ -185,7 +186,6 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn)
        Widget_Data *wd = elm_widget_data_get(obj);\r
        Eina_List *l;\r
        Elm_Multibuttonentry_Item *item;\r
-       Evas_Object *label;\r
        if (!wd) return;\r
 \r
        // change the state of previous button to "default"\r
@@ -348,19 +348,18 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
                item->label = label;\r
                item->data = data;\r
                item->rw = w_btn;\r
-               item->vw =(wd->w_box < w_btn) ? wd->w_box : w_btn;              \r
+               item->vw =(MAX_W_BTN < w_btn) ? MAX_W_BTN : w_btn;              \r
                wd->items = eina_list_append(wd->items, item);\r
        }\r
 \r
+       //resize btn and label\r
        evas_object_resize(btn, item->vw, h_btn);\r
-\r
-       if(item->rw != item->vw){\r
+       evas_object_size_hint_min_set(btn, item->vw, h_btn);\r
+       if((item->rw != item->vw) && (item->vw - 2*padding_outer - 4*padding_inner >=0)){\r
                evas_object_resize(label, item->vw - 2*padding_outer - 2*padding_inner, h_label);       \r
                elm_label_wrap_width_set(label, item->vw - 2*padding_outer - 4*padding_inner ); \r
        }\r
 \r
-       evas_object_size_hint_min_set(btn, item->vw, h_btn);\r
-\r
        evas_object_smart_callback_call(obj, "added", item);\r
 \r
        return item;\r
@@ -440,9 +439,11 @@ elm_multibuttonentry_add(Evas_Object *parent)
        Evas_Object *obj;\r
        Evas *e;\r
        Widget_Data *wd;\r
+       if (!parent) return NULL;\r
 \r
        wd = ELM_NEW(Widget_Data);\r
        e = evas_object_evas_get(parent);\r
+       if (!e) return NULL; \r
        obj = elm_widget_add(e);\r
        ELM_SET_WIDTYPE(widtype, "multibuttonentry");\r
        elm_widget_type_set(obj, "multibuttonentry");\r
@@ -473,7 +474,7 @@ elm_multibuttonentry_add(Evas_Object *parent)
 EAPI const char *\r
 elm_multibuttonentry_label_get(Evas_Object *obj)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        if (!wd) return NULL;\r
 \r
@@ -497,7 +498,7 @@ elm_multibuttonentry_label_set(Evas_Object *obj, const char *label)
 {\r
        ELM_CHECK_WIDTYPE(obj, widtype);\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
-       if (!wd) return;\r
+       if (!wd || !label) return;\r
 \r
        _set_label(obj, label); \r
 }\r
@@ -513,7 +514,7 @@ elm_multibuttonentry_label_set(Evas_Object *obj, const char *label)
 EAPI Evas_Object *\r
 elm_multibuttonentry_entry_get(Evas_Object *obj)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        if (!wd)        return NULL;\r
 \r
@@ -533,10 +534,10 @@ elm_multibuttonentry_entry_get(Evas_Object *obj)
 EAPI Elm_Multibuttonentry_Item *\r
 elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *data)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        Elm_Multibuttonentry_Item *item;\r
-       if (!wd) return NULL;\r
+       if (!wd || !label) return NULL;\r
 \r
        item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_START, NULL, data);\r
        return item; \r
@@ -555,10 +556,10 @@ elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *d
 EAPI Elm_Multibuttonentry_Item *\r
 elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *data)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        Elm_Multibuttonentry_Item *item;\r
-       if (!wd) return NULL;\r
+       if (!wd || !label) return NULL;\r
 \r
        item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_END, NULL, data);\r
        return item; \r
@@ -579,10 +580,10 @@ elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *dat
 EAPI Elm_Multibuttonentry_Item *\r
 elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *before, void *data)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        Elm_Multibuttonentry_Item *item;\r
-       if (!wd) return NULL;\r
+       if (!wd || !label) return NULL;\r
 \r
        item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_BEFORE, before, data);\r
        return item; \r
@@ -602,10 +603,10 @@ elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Mu
 EAPI Elm_Multibuttonentry_Item *\r
 elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *after, void *data)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        Elm_Multibuttonentry_Item *item;\r
-       if (!wd) return NULL;\r
+       if (!wd || !label) return NULL;\r
 \r
        item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_AFTER, after, data);\r
        return item; \r
@@ -622,7 +623,7 @@ elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Mul
 EAPI const Eina_List *\r
 elm_multibuttonentry_items_get(Evas_Object *obj)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        if (!wd) return NULL;\r
        return wd->items;\r
@@ -639,7 +640,7 @@ elm_multibuttonentry_items_get(Evas_Object *obj)
 EAPI Elm_Multibuttonentry_Item *\r
 elm_multibuttonentry_item_first_get(Evas_Object *obj)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        if (!wd || !wd->items) return NULL;\r
        return eina_list_data_get(wd->items);\r
@@ -656,7 +657,7 @@ elm_multibuttonentry_item_first_get(Evas_Object *obj)
 EAPI Elm_Multibuttonentry_Item *\r
 elm_multibuttonentry_item_last_get(Evas_Object *obj)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        if (!wd || !wd->items) return NULL;\r
        return eina_list_data_get(eina_list_last(wd->items));\r
@@ -673,7 +674,7 @@ elm_multibuttonentry_item_last_get(Evas_Object *obj)
 EAPI Elm_Multibuttonentry_Item *\r
 elm_multibuttonentry_item_selected_get(Evas_Object *obj)\r
 {\r
-       ELM_CHECK_WIDTYPE(obj, widtype);\r
+       ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        if (!wd || !wd->current) return NULL;\r
        return eina_list_data_get(wd->current);\r
@@ -761,7 +762,7 @@ elm_multibuttonentry_item_label_get(Elm_Multibuttonentry_Item *item)
        Elm_Multibuttonentry_Item *_item;\r
 \r
        if (!item) return NULL;\r
-       ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype);\r
+       ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype) NULL;\r
        wd = elm_widget_data_get(item->multibuttonentry);\r
        if (!wd || !wd->items) return NULL;\r
 \r
@@ -818,7 +819,7 @@ elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item)
        Elm_Multibuttonentry_Item *_item;\r
 \r
        if (!item) return NULL;\r
-       ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype);\r
+       ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype) NULL;\r
        wd = elm_widget_data_get(item->multibuttonentry);\r
        if (!wd || !wd->items) return NULL;\r
 \r
@@ -847,7 +848,7 @@ elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item)
        Elm_Multibuttonentry_Item *_item;\r
 \r
        if (!item) return NULL;\r
-       ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype);\r
+       ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype) NULL;\r
        wd = elm_widget_data_get(item->multibuttonentry);\r
        if (!wd || !wd->items) return NULL;\r
 \r