[elm_multibuttonentry] fix the bug of sizing eval
authorHyunsil Park <hyunsil.park@samsung.com>
Mon, 23 Aug 2010 08:57:48 +0000 (17:57 +0900)
committerHyunsil Park <hyunsil.park@samsung.com>
Mon, 23 Aug 2010 08:57:48 +0000 (17:57 +0900)
src/lib/elm_multibuttonentry.c

index 3d3badb..cbaeb46 100755 (executable)
@@ -94,14 +94,21 @@ static void
 _sizing_eval(Evas_Object *obj)\r
 {\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
-       Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;\r
+       Evas_Coord minw = -1, minh = -1, minw_box = -1, minh_box = -1;\r
+       Evas_Coord left_padding, right_padding, top_padding, bottom_padding;\r
        if (!wd) return;\r
+\r
+       evas_object_size_hint_min_get(obj, &minw, &minh);\r
+       evas_object_size_hint_min_get(wd->box, &minw_box, &minh_box);\r
+       edje_object_part_geometry_get(wd->base, "left.padding", NULL, NULL, &left_padding, NULL);\r
+       edje_object_part_geometry_get(wd->base, "right.padding", NULL, NULL, &right_padding, NULL);\r
+       edje_object_part_geometry_get(wd->base, "top.padding", NULL, NULL, NULL, &top_padding);\r
+       edje_object_part_geometry_get(wd->base, "bottom.padding", NULL, NULL, NULL, &bottom_padding);\r
        \r
-       elm_coords_finger_size_adjust(1, &minw, 1, &minh);\r
-       edje_object_size_min_restricted_calc(wd->base, &minw, &minh, minw, minh);\r
-       elm_coords_finger_size_adjust(1, &minw, 1, &minh);\r
+       if (minw < minw_box) minw = minw_box + left_padding + right_padding;\r
+       if (minh < minh_box) minh = minh_box + top_padding + bottom_padding;\r
        evas_object_size_hint_min_set(obj, minw, minh);\r
-       evas_object_size_hint_max_set(obj, maxw, maxh);\r
+       evas_object_resize(obj, minw, minh);\r
 }\r
 \r
 static void \r
@@ -110,7 +117,6 @@ _resize_cb(void *data, Evas *evas, Evas_Object *obj, void *event)
        Widget_Data *wd = elm_widget_data_get(data);    \r
        if (!wd) return;\r
        evas_object_geometry_get(wd->box, NULL, NULL, &wd->w_box, &wd->h_box);\r
-       _sizing_eval(data);\r
 }\r
 \r
 static void\r
@@ -118,7 +124,6 @@ _event_init(Evas_Object *obj)
 {\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        if(!wd || !wd->base)    return;\r
-\r
        evas_object_event_callback_add(wd->base, EVAS_CALLBACK_RESIZE, _resize_cb, obj);\r
 }\r
 \r
@@ -227,6 +232,7 @@ _item_del(Elm_Multibuttonentry_Item *item)
                        break;\r
                }\r
        }\r
+       _sizing_eval(item->multibuttonentry);\r
 }\r
 \r
 static void\r
@@ -325,6 +331,8 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
 \r
        evas_object_smart_callback_call(obj, "added", item);\r
 \r
+       _sizing_eval(obj);\r
+\r
        return item;\r
 }\r
 \r
@@ -427,6 +435,7 @@ elm_multibuttonentry_add(Evas_Object *parent)
        \r
        _event_init(obj);\r
        _view_init(obj);\r
+       _sizing_eval(obj);\r
 \r
        return obj;\r
 }\r