diff --git a/src/bin/extra_util.c b/src/bin/extra_util.c index c6a90a6..32243ee 100644 --- a/src/bin/extra_util.c +++ b/src/bin/extra_util.c @@ -288,13 +288,23 @@ static void _popup_block_click_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { elm_popup_dismiss(_ui.popup_toolbar); + //from this time on we are not interested in the reference anymore + _ui.popup_toolbar = NULL; } static void -_popup_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) +_dismissed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - evas_object_del(obj); - _ui.popup_toolbar = NULL; + evas_object_del(data); +} + +static void +_popup_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + //delete the event rect + evas_object_del(data); + if (_ui.popup_toolbar == obj) + _ui.popup_toolbar = NULL; } void @@ -311,6 +321,7 @@ extra_ui_show_popup_toolbar(Evas_Object *content) tooltip = elm_popup_add(_ui.win); elm_popup_allow_events_set(tooltip, EINA_TRUE); elm_popup_orient_set(tooltip, ELM_POPUP_ORIENT_TOP); + evas_object_smart_callback_add(tooltip, "dismissed", _dismissed, tooltip); elm_object_content_set(tooltip, content); evas_object_show(tooltip);