From 000fceb51f0de56f4838dd1710208c893b1b7d71 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Fri, 13 May 2011 19:28:42 +0900 Subject: [PATCH] [popup] ecore_timer_call issue: size evaluation after state set Change-Id: I10434ca0d0eda6e4edc1ab463ec80d2dbb9d61b4 --- src/lib/elm_popup.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/lib/elm_popup.c b/src/lib/elm_popup.c index 496e579..3dc419f 100644 --- a/src/lib/elm_popup.c +++ b/src/lib/elm_popup.c @@ -51,6 +51,9 @@ static void _block_clicked_cb(void *data, Evas_Object *obj, void *event_info); static void _show(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _hide(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl); +static void _state_set_cb(void *data, Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__); static void _del_hook(Evas_Object *obj) @@ -323,6 +326,15 @@ _mirrored_set(Evas_Object *obj, Eina_Bool rtl) elm_object_mirrored_set(wd->notify, rtl); } +static void +_state_set_cb(void *data, Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get((Evas_Object*)data); + if (!wd) return; + if (wd->layout) elm_layout_sizing_eval(wd->layout); +} + /** * Add a new Popup object. * @@ -367,6 +379,10 @@ elm_popup_add(Evas_Object *parent) elm_layout_theme_set(wd->layout, "popup", "base", elm_widget_style_get(obj)); elm_notify_content_set(wd->notify, wd->layout); + edje_object_signal_callback_add(elm_layout_edje_get(wd->layout), "elm,state,title,visible", "elm", _state_set_cb, obj); + edje_object_signal_callback_add(elm_layout_edje_get(wd->layout), "elm,state,button,visible", "elm", _state_set_cb, obj); + edje_object_signal_callback_add(elm_layout_edje_get(wd->layout), "elm,state,button,title,visible", "elm", _state_set_cb, obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _show, NULL); evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, NULL); wd->mode = ELM_POPUP_TYPE_NONE; -- 2.7.4