bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/apps/extra.git/commit/?id=d36e68bdd420cf9ee4fb7e7355b2517bb4cc70d1

commit d36e68bdd420cf9ee4fb7e7355b2517bb4cc70d1
Author: Marcel Hollerbach <marcel-hollerb...@t-online.de>
Date:   Sun Feb 5 12:49:39 2017 +0100

    extra: stop leaking the event rectangle
---
 src/bin/extra_util.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

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);
 

-- 


Reply via email to