[multibuttonentry] add padding and fix the bug of mbe height
authorHyunsil <hyunsil.park@samsung.com>
Fri, 3 Dec 2010 12:10:17 +0000 (21:10 +0900)
committerHyunsil <hyunsil.park@samsung.com>
Fri, 3 Dec 2010 12:10:17 +0000 (21:10 +0900)
src/lib/elm_multibuttonentry.c

index 9409cb6..eef4e99 100644 (file)
@@ -44,6 +44,7 @@ typedef struct _Widget_Data Widget_Data;
 struct _Widget_Data {\r
        Evas_Object *base;\r
        Evas_Object *box;\r
+       Evas_Object *rect;\r
        Evas_Object *entry;\r
        Evas_Object *label;\r
        Evas_Object *guidetext;\r
@@ -101,6 +102,7 @@ _del_hook(Evas_Object *obj)
        }\r
        wd->current = NULL;\r
 \r
+       if(wd->rect) evas_object_del(wd->rect);\r
        if(wd->entry) evas_object_del(wd->entry);\r
        if(wd->label) evas_object_del(wd->label);\r
        if(wd->guidetext) evas_object_del(wd->guidetext);\r
@@ -142,9 +144,16 @@ _sizing_eval(Evas_Object *obj)
 {\r
        Widget_Data *wd = elm_widget_data_get(obj);\r
        Evas_Coord minw = -1, minh = -1;\r
+       Evas_Coord left, right, top, bottom;\r
        if (!wd) return;\r
 \r
        evas_object_size_hint_min_get(wd->box, &minw, &minh);\r
+       edje_object_part_geometry_get(wd->base, "top.left.pad", NULL, NULL, &left, &top);\r
+       edje_object_part_geometry_get(wd->base, "bottom.right.pad", NULL, NULL, &right, &bottom);       \r
+\r
+       minw += (left + right);\r
+       minh += (top + bottom);\r
+       \r
        evas_object_size_hint_min_set(obj, minw, minh);\r
 }\r
 \r
@@ -209,7 +218,7 @@ _contracted_state_set(Evas_Object *obj, int contracted)
        elm_scrolled_entry_entry_set(wd->entry, "");\r
 \r
        if(contracted == 1){            \r
-               Evas_Coord w=0, w_label=0;\r
+               Evas_Coord w=0, w_tmp=0;\r
                \r
                // unpack all items and entry\r
                EINA_LIST_FOREACH(wd->items, l, item) {\r
@@ -226,10 +235,13 @@ _contracted_state_set(Evas_Object *obj, int contracted)
                // pack buttons only 1line\r
                w = wd->w_box;\r
 \r
+               // w -= w_rect\r
+               if(wd->rect) evas_object_geometry_get(wd->rect, NULL, NULL, &w_tmp, NULL);\r
+               w -= w_tmp;\r
+\r
                // w -= w_label\r
-               if(wd->label) \r
-                       evas_object_geometry_get(wd->label, NULL, NULL, &w_label, NULL);\r
-               w -= w_label;\r
+               if(wd->label) evas_object_geometry_get(wd->label, NULL, NULL, &w_tmp, NULL);\r
+               w -= w_tmp;\r
 \r
                // w -= w_btns          \r
                item = NULL;\r
@@ -364,7 +376,10 @@ _set_label(Evas_Object *obj, const char* str)
                elm_label_text_align_set(wd->label, "left");\r
                evas_object_size_hint_weight_set(wd->label, 0.0, EVAS_HINT_EXPAND);\r
                evas_object_size_hint_align_set(wd->label, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
-               if(wd->box)     elm_box_pack_start(wd->box, wd->label);\r
+               if(wd->box){\r
+                       if(wd->rect) elm_box_pack_after(wd->box, wd->label, wd->rect);\r
+                       else elm_box_pack_start(wd->box, wd->label);\r
+               }\r
                evas_object_show(wd->label);\r
        }\r
 \r
@@ -667,6 +682,19 @@ _view_init(Evas_Object *obj)
                edje_object_part_swallow(wd->base, "box.swallow", wd->box);\r
        }\r
        \r
+       if(!wd->rect){\r
+               Evas_Coord w, h;\r
+               if(!(wd->rect = edje_object_add(evas_object_evas_get(obj)))) return;\r
+               _elm_theme_object_set(obj, wd->rect, "multibuttonentry", "rect", elm_widget_style_get(obj));\r
+               elm_widget_sub_object_add(obj, wd->rect);\r
+               edje_object_part_geometry_get(wd->rect, "elm.base", NULL, NULL, &w, &h);\r
+               evas_object_size_hint_min_set(wd->rect, w, h);          \r
+               evas_object_size_hint_weight_set(wd->rect, 0.0, EVAS_HINT_EXPAND);\r
+               evas_object_size_hint_align_set(wd->rect, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
+               if(wd->box)     elm_box_pack_start(wd->box, wd->rect);\r
+               evas_object_show(wd->rect);\r
+       }\r
+       \r
        if(!wd->entry){\r
                if(!(wd->entry = elm_scrolled_entry_add(obj))) return;\r
                elm_scrolled_entry_single_line_set(wd->entry, EINA_TRUE);\r
@@ -676,7 +704,7 @@ _view_init(Evas_Object *obj)
                evas_object_event_callback_add(wd->entry, EVAS_CALLBACK_KEY_UP, _evas_key_up_cb, obj);\r
                evas_object_size_hint_weight_set(wd->entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
                evas_object_size_hint_align_set(wd->entry, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
-               elm_box_pack_end(wd->box, wd->entry);\r
+               if(wd->box)     elm_box_pack_end(wd->box, wd->entry);\r
                evas_object_show(wd->entry);\r
        }\r
 \r