[elm_stackedicon] fix the bug that icon is shown on navigation bar
authorHyunsil Park <hyunsil.park@samsung.com>
Thu, 2 Sep 2010 15:20:46 +0000 (00:20 +0900)
committerHyunsil Park <hyunsil.park@samsung.com>
Thu, 2 Sep 2010 15:20:46 +0000 (00:20 +0900)
src/lib/elm_stackedicon.c

index a1b167d..0fc9437 100755 (executable)
@@ -33,6 +33,7 @@ struct _Stackedicon_Item {
 typedef struct _Widget_Data Widget_Data;\r
 struct _Widget_Data {  \r
        Evas_Object *bx;\r
+       Evas_Object *clip;\r
        double ewma;\r
        int interval_x;\r
        int interval_y; \r
@@ -346,6 +347,7 @@ static void _add_image(Evas_Object *obj, void *data)
        _elm_theme_object_set(obj, ly, "stackedicon", "icon", elm_widget_style_get(obj));\r
        evas_object_size_hint_weight_set(ly, 1.0, 1.0);\r
        elm_widget_sub_object_add(obj, ly); \r
+       evas_object_clip_set(ly, wd->clip);\r
        \r
        ic = evas_object_image_add(evas_object_evas_get(obj));\r
        evas_object_image_load_size_set(ic, wd->w/2, wd->h/2);\r
@@ -480,7 +482,10 @@ _resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
        evas_object_geometry_get(obj, NULL, NULL, &w, &h);      \r
        wd->w = w;\r
        wd->h = h;\r
-       evas_object_resize(wd->bx, w, h);       \r
+\r
+       evas_object_geometry_get(elm_widget_parent_get(data), NULL, NULL, &w, &h);      \r
+       if(wd->clip) evas_object_resize(wd->clip, w, h);\r
+       \r
        _update_stackedicon(data);\r
 }\r
 \r
@@ -494,7 +499,10 @@ _move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
        evas_object_geometry_get(obj, &x, &y, NULL, NULL);      \r
        wd->x = x;\r
        wd->y = y;\r
-       evas_object_move(wd->bx, x, y);\r
+\r
+       evas_object_geometry_get(elm_widget_parent_widget_get(data), &x, &y, NULL, NULL);\r
+       if(wd->clip) evas_object_move(wd->clip, x, y);\r
+       \r
        _update_stackedicon(data);      \r
 }\r
 \r
@@ -504,6 +512,7 @@ _show_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
        Widget_Data *wd = elm_widget_data_get(data);\r
        if (!wd) return;\r
 \r
+       evas_object_show(wd->clip);\r
        _update_stackedicon(data);      \r
        _show_all_image(data);\r
 }\r
@@ -514,6 +523,7 @@ _hide_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
        Widget_Data *wd = elm_widget_data_get(data);\r
        if (!wd) return;\r
 \r
+       evas_object_hide(wd->clip);\r
        _hide_all_image(data);\r
 }\r
 \r
@@ -561,6 +571,9 @@ elm_stackedicon_add(Evas_Object *parent)
        wd->w = 1;\r
        wd->h = 1;\r
        wd->on_expanded = EINA_FALSE;\r
+\r
+       wd->clip = evas_object_rectangle_add(e);\r
+       elm_widget_sub_object_add(obj, wd->clip);\r
        \r
        _event_init(obj);\r
        _sizing_eval(obj);\r
@@ -594,7 +607,7 @@ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_append(Evas_Object *obj, const c
        it->on_show = EINA_FALSE;       \r
        wd->list = eina_list_append(wd->list, it);\r
 \r
-       //_update_stackedicon(obj);\r
+       _update_stackedicon(obj);\r
 \r
        return it;\r
 }\r
@@ -625,7 +638,7 @@ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_prepend(Evas_Object *obj, const
        it->on_show = EINA_FALSE;       \r
        wd->list = eina_list_prepend(wd->list, it);\r
 \r
-       //_update_stackedicon(obj);\r
+       _update_stackedicon(obj);\r
 \r
        return it;\r
 }\r